C和C++运算符

✍ dations ◷ 2025-11-27 06:56:25 #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  }

安全问题

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

相关

  • 类鼻疽伯克氏菌类鼻疽伯克氏菌(Burkholderia pseudomallei)(原名类鼻疽假单胞菌(Pseudomonas pseudomallei))是一种革兰氏阴性致病菌。人类感染类鼻疽伯克氏菌后,会导致类鼻疽。医学导航:病菌
  • 蛋白质微阵列蛋白质微阵列(英语:Protein microarray,亦称为蛋白质芯片)是将不同的具有生物活性的蛋白质分别置于微量板的不同孔内来进行蛋白质功能筛选的文库。它实质上是cDNA阵列文库的继续
  • 生育酚生育酚(英语:Tocopherol,或称为TCP)是主要表现出维生素E活性的一类化合物。这是一类含有被多甲基化的酚类有机化合物。因为其维生素活性首次在1936年针对大鼠繁殖力因素的实验中
  • 薄伽梵歌《薄伽梵谭》(梵语:भगवद् गीता,转写:Bhagavad Gītā,字面意思是“至尊神的颂谭、颂赞、赞歌”),又称为薄伽梵颂、薄伽梵卡、薄伽梵歌、博伽梵歌,是印度教的重要经典,叙述了
  • 铜T含铜避孕器(Intrauterine device with copper)也称为铜制宫内避孕器,是一种借由释放铜离子达到避孕效果的宫内节育器,。本品可用来避孕,若有进行过无避孕措施的非安全性行为,在五
  • 无危物种无危物种又称低关注度物种,是国际自然保护联盟对物种保护现状分类之一,指现存的物种中被评估为不属于其他分类的物种。它们既不是濒危物种、也不是近危物种,亦不是需要保护生存
  • 前置四驱前置四驱(英语:Front-engine, Four-wheel drive layout,简写:F4)意指引擎前置在车头,由四轮驱动整辆汽车的方式。由于四轮均有动力,相对于只靠前轮或后轮驱动的设计,前置四驱拥有较
  • 鬼畜鬼畜为一日语词汇,原本为佛教词汇,乃六道中的饿鬼与畜生两道合称之简写。这个词之后转化为指人残酷无情以至残忍、非人道的虐待、虐杀等行动。鬼畜一词原本为佛教对六道中饿鬼
  • 正体正体,从汉字字体的角度来看,是规定的标准字体,与草体相对。秦朝,以小篆为正体字,以隶书为草体。西汉以隶书为正体,以楷书为草体。到了南北朝,楷书代替了隶书成为主要字体。楷书吸收
  • 早稻田文学早稲田文学(わせだぶんがく)是早稻田大学文学部刊行的文艺杂志。1891年由小说家坪内逍遥创刊,至1898年停刊。1906年复刊,由岛村抱月主编,正宗白鸟、秋田雨雀等人执笔,至1927年又停