C和C++运算符

✍ dations ◷ 2025-11-29 16:17:18 #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  }

安全问题

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

相关

  • 溃疡性结肠炎溃疡性结肠炎(英语:ulcerative colitis,缩写作 UC),也称非特异性溃疡性结肠炎是一种会导致结肠与直肠发炎与溃疡的慢性疾病。其发作时的主要症状包括腹痛与伴有血便的腹泻,体重减
  • 微兽目 Microbiotheria small/small微兽目(Microbiotheria),又名智鲁负鼠目或小负鼠目,是有袋下纲下的一个目,其下只有微兽科(Microbiotheriidae)。这个目下的大部分物种都已经灭绝,只剩下南猊。现时已知最古老的微兽
  • 梅杰德梅杰德(英语:Medjed)是一位古埃及神祇,在死者之书中有关于祂的记载。死者之书的第17段提到,在众多地位较卑微的神祇中,有一位神的名字叫做梅杰德(名字的意思是“打击者”),下面为其记
  • I-4040号州际公路(Interstate 40,简称I-40)是美国州际公路系统的一部分。西起加利福尼亚州巴斯托(与15号州际公路交汇),东在北卡罗莱纳州威尔明顿与美国国道117和北卡罗莱纳州公路132
  • 龙珠Z 银河面临危机!!身手不凡的高手 《龙珠Z 银河面临危机!!身手不凡的高手》(日语:ドラゴンボールZ 銀河ギリギリ!!ぶっちぎりの凄い奴,英语: Dragon Ball Z: The Galaxy's at the Brink!! The Super Incredibl
  • 磺内酯在有机化学中,磺内酯为羟基磺酸的环状磺酸酯,主要存在四元,七元环化合物,有时也有五元环化合物。它们通常为存在时间短暂的中间体,属于可引入带负电荷的磺酸酯基团的强烷基化试剂
  • 林焕彰林焕彰(1939年8月16日-),台湾宜兰县礁溪乡人,儿童文学作家,诗人,著作有诗、儿童文学、散文、史料、评论等,作品曾被译成多国语言,重要著作有《牧云初集》、《公路边的树》、《斑鸠与
  • 鲸凹齿形类鲸凹齿形类(学名:Cetancodontamorpha)为偶蹄目下的一个总群,根据斯伯丁(Spaulding)所定义,包含了鲸河马亚目加上其他亲缘关系比起其他现存物种与鲸河马亚目为最近的已灭绝物种。鲸
  • 杰恩·克拉德波里莱杰恩·克拉德波里莱(Jean-Claude Borelly,1953年7月2日-),法国作曲家及小号演奏家。其演奏作品主要以大众接受度高的乐曲为主,而较少演奏古典音乐。1953年7月2日,杰恩·克拉德波里
  • DOS MZ可执行文件DOS MZ可执行文件(英语:DOS MZ executable)格式是DOS中的.EXE可执行文件格式。该文件在文件头部用ASCII字符串“MZ”(十六进制:4D 5A)标识。“MZ”是MS-DOS开发者之一的马克·茨柏