C和C++运算符

✍ dations ◷ 2025-11-25 08:18:54 #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  }

安全问题

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

相关

  • 喹啉喹啉,也叫做苯并吡啶、氮杂萘,是一个杂环芳香性有机化合物。喹啉是一个具有强烈臭味的无色吸湿性液体,分子式是C9H7N。将喹啉暴露在光下,会慢慢变成淡黄色,进一步变成棕色。喹啉
  • 促卵泡激素促卵泡激素(英语:follicle-stimulating hormone, FSH,亦称为卵泡刺激素)是一种由脑垂体合成并分泌的激素,属于糖基化蛋白质激素,因最早发现其对女性卵泡成熟的刺激作用而得名。后
  • 保罗·寇恩保罗·约瑟夫·寇恩(英语:Paul Joseph Cohen,1934年4月2日-2007年3月23日) ,美国数学家,他证明策梅洛-弗兰克尔公理系统加上选择公理 (ZFC) 不能反驳连续统假设 (CH) 的否命题,而ZF
  • 4f14 6s22, 8, 18, 32, 8, 2蒸气压3, 2, 1 (第一:603.4 kJ·mol−1 第二:1174.8 kJ·mol−1 第三:2417 kJ·mol主条目:镱的同位素镱是一种化学元素,符号为Yb,原子序为70。它属
  • apoptosis细胞凋亡(英语:apoptosis,源自希腊语:απόπτωσις,有“堕落、死亡”之意),为一种细胞程序性死亡。相对于细胞坏死(necrosis),细胞凋亡是细胞主动实施的。细胞凋亡一般由生理或
  • 音乐专辑音乐专辑(英语:Album),或简称为“专辑”,也有部分地区称呼为“大碟”,指的是多个音频录音作品以CD、唱片、录音带等介质为载体发布的单个项目的统称,一般指含有至少10个音轨的唱片
  • 泰约·特尼斯特泰约·特尼斯特(爱沙尼亚语:Taijo Teniste;1988年1月31日-)是一位爱沙尼亚足球运动员。在场上的位置是中场和后卫。他现在效力于挪威足球超级联赛球队桑恩达足球俱乐部。他也代表
  • 大辛庄镇 (定州市)大辛庄镇,是中华人民共和国河北省保定市定州市下辖的一个乡镇级行政单位。大辛庄镇下辖以下地区:大辛庄村、小寨屯社区村、中古屯村、土良村、北旺村、东四旺村、西四旺村、齐
  • 盛可以盛可以(1973年7月4日-),湖南益阳人,中国当代作家。1994年起定居深圳,2002年起发表小说作品。作品被翻译成英、法、意、日、韩、西班牙语等在海外发行出版。2012年长篇小说《Northe
  • 汤晏汤晏,早年从中国大陆移居台湾,毕业于台湾大学历史系,后获美国纽约大学历史系博士学位。著有《民国第一才子钱锺书》一书。该书的简体字版本于2005年由上海人民出版社以《一代才