C和C++运算符

✍ dations ◷ 2025-12-02 09:24: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  }

安全问题

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

相关

  • 头孢羟氨苄头孢羟氨苄是一种杀菌的头孢菌素类广谱抗生素,对革兰氏阳性和革兰氏阴性细菌的感染有效。它由头孢氨苄羟基段衍生而来。可用于治疗轻度至中度易受感染,如因细菌化脓性链球菌引
  • 反对称关系数学上,若对所有的 a 和 b 属于 X,下述语句保持有效,则集合 X 上的二元关系 R 是反对称的:“若 a 关系到 b 且 b 关系到 a,则 a = b。”数学上表示为:严格不等是反对称的;实际上
  • 苗瑶语苗瑶语是苗、瑶、畲等族群所使用的有共同来源的一些语言的总称。学术界对于苗瑶语的语言系属分类有不同看法:华人和中国学者多认为苗瑶语是属于汉藏语系的语族,即苗瑶语族;欧美
  • 椰子猫(P. hermaphroditus)椰子猫(学名:Paradoxurus hermaphroditus),又名椰子狸,为分布于南亚及东南亚的一种麝猫。椰子猫平均重3.2公斤,体长53厘米,尾巴长48厘米。它们的毛粗糙,一般呈灰色,脚、耳朵及吻都是
  • 2004年被中华人民共和国处决的死刑犯列表2004年被中华人民共和国处决的死刑犯列表
  • 上田敦夫上田敦夫(19??年??-),日本漫画家,出身。2010年以前曾经担任漫画家真岛浩的助手,那时候使用名“上田唯”。待补充漫画家です。‘FAIRY TAIL 100 YEARS QUEST’をマガジンポケットに
  • 黄自黄自(1904年3月23日-1938年5月9日),字今吾,江苏省川沙县(今上海浦东)人,中国作曲家,音乐教育家,黄炎培之侄。黄自自幼饱读诗书,尤爱音乐。1916年入北京清华学校,接触西洋音乐。毕业赴美
  • 张瑚树张瑚树(1840年-1919年),清末学者。陕西清涧县人。光绪二十年(1894年)甲午科陕西乡试第一名举人(解元)。拣选知县,授文林郎。曾主绥德雕山书院。工诗文。诗作:
  • 多林·戈伊安多林·戈伊安(Dorin Goian;1980年12月12日-)是罗马尼亚的一位足球运动员,在场上的位置是中后卫。他现在效力于希腊足球超级联赛球队阿斯特拉斯特里波利斯足球俱乐部。他也代表罗
  • 锇酸钾锇酸钾是一种无机化合物,化学式为K2,其中,锇为+6价。它是烯烃不对称二羟基化反应的催化剂,这种紫色固体是反磁性的。它溶于水时,形成粉色溶液,但溶于甲醇得到的却是蓝色的溶液。和