C和C++运算符

✍ dations ◷ 2025-11-29 11:00:23 #Webarchive模板archiveit链接,C语言,C++

所有的C语言运算符都被C++语言支持。C语言不支持运算符重载。

在不重载时,运算符&&||,(逗号运算符),在第一个操作数求值之后有一个顺序点。

大部分C与C++运算符也可用于其它程序设计语言如C#、Java、Perl、PHP等,具有相同的优先级、结合性与语义。

以下是C++编程语言中的所有运算符的优先级和结合性列表。

在本表中,abc代表有效值(来自变量或返回值的逐字常量或数值)、对象名称,或适当的左值。

在C和C++中对运算符的约束,是语言的语法规范因素所指定的(在对应的标准中),而不是优先级列表。这造成了一些微妙的冲突。例如,在C中,条件表达式的语法是:

   邏輯-OR-表達式 ? 表達式 : 條件-表達式

在C++中则是:

   邏輯-or-表達式 ? 表達式 : 賦值-表達式

因此,这个表达式:

   e = a ? b : c = d

两个语言的语法分析结果并不相同。在C中,这个表达式被解析为:

   e = ((a ? b : c) = d)

这是一个错误的语义,因为条件-表达式的结果并不是一个左值。在C++中,则解析为:

   e = (a ? b : (c = d))

这是一个有效的表达式。

比特逻辑运算符的优先级一直受到批评 Archive-It的存档,存档日期2015-02-03。在观念里,&和|是类似于+和*的数值运算符。但是,表达式

   a & b == 7

意谓

   a & (b == 7)

   a + b == 7

意谓

   (a + b) == 7

这就需要经常使用圆括号,以免有意料之外的结果。

一元正号运算符可用于操作数表达式的类型提升。例如下例:

template <class T> void f(T const& a, T const& b){};int main() {	int a;	int b;	f(a, b); // won't work! different values for "T"!	f(+a, +b); // works! T is "int*" both  }

安全问题

下表指出了各个运算符可能导致的安全问题:

相关

  • 阻转异构阻转异构现象是某些分子单键自由旋转受阻时,产生光活性异构体的现象,也可看作是构象异构的一类。其英文名为Atropisomer,来源于希腊文,其中a意为“不”,tropos意为“旋转”。该名
  • 三叶动物门三叶动物门(学名:Trilobozoa),又名三裂动物门,是一个已经完全灭绝的动物门,在分类上属辐射对称动物,身体呈特殊的三重辐射对称结构。三叶动物生存的年代非常久远,其化石仅出现于寒武
  • 国会下议院222名议员(截至2020年3月1日上午11时30分 (UTC+08:00))土著团结党(穆希丁派系)(29)砂团结党(英语:Parti Sarawak Bersatu)(1)沙巴民族复兴党(9)土著团结党(马哈蒂尔派系)(6)沙民统(1)砂人联党(1)
  • 铁氧还蛋白铁氧还蛋白(英语:Ferredoxin)是一类在多种代谢反应中介导电子转移的铁硫蛋白。“铁氧还蛋白”这个词由杜邦公司的D·C·沃顿所创,并将此名应用于默顿森、瓦伦丁与卡纳汉从厌氧菌
  • 土耳其国家图书馆土耳其国家图书馆(Millî Kütüphane)是土耳其的国家图书馆,位于该国首都安卡拉。此图书馆成立于1946年4月15日,是土耳其藏书最多的图书馆之一。 该博物馆最初建立时因为空间太
  • 荷尔 (法老)荷尔(英语:Hor),埃及第十三王朝国王。他命令修缮位于达舒尔的阿蒙涅姆赫特三世的金字塔。其墓位于阿蒙涅姆赫特三世金字塔附近,保存完好。其木乃伊也已被发现,现藏开罗博物馆。
  • 陈明珠陈明珠(1988年6月30日-),台湾主持人。籍贯台湾苗栗县,客家人。2012年主持客家电视台《客庄好味道》。于2016年担任蔡英文总统就职典礼司仪爆红。2016年起,担任八大电视台《Gogo讲
  • 妖怪乐团妖怪乐团(芬兰语:Lordi)是成立于1992年的芬兰知名重金属与重摇滚乐团,该乐团的特色为拥有妖怪模样的舞台服装与装扮,并以抒情重摇滚见长。2006年,经过公开甄选并获选的妖怪乐团,代
  • 雨花石雨花石是一种天然玛瑙石,也称文石,观赏石,幸运石。雨花石的孕育到形成,经过了原生形成、次生搬运和沉积砾石层这三个复杂而漫长的阶段,也可谓是历尽沧桑方显风流了。 一般提到雨
  • 李贞李贞可以指: