C和C++运算符

✍ dations ◷ 2025-12-02 22:14:56 #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  }

安全问题

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

相关

  • 科学研究科学方法(英语:scientific method)指的是检查自然现象、获取新知识或修正与整合先前已得的知识,所使用的一整套技术。为了合乎科学精神,这方法必须建立于收集可观察、可经验(empir
  • 负反馈机制负反馈(英语:negative feedback),是反馈的一种。是指系统的输出会影响系统的输入,在输出变动时,所造成的影响恰和原来变动的趋势相反;反之,就称为正反馈。另一种说法是系统在一个条
  • 朱罗王朝朱罗王朝(泰米尔语:சோழர் குலம், 宽式IPA:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","C
  • 金属氢化物氢化物是一类氢的化合物。严格意义上讲,氢化物只包含氢同金属相互结合的化合物,但由于概念的扩大,有时它也包含水、氨和碳氢化合物等物质。氢化物基本上可按以下标准分类:氢负离
  • 中华人民共和国的社会问题中华人民共和国的社会问题,从二十一世纪长程的角度看可被视作各种全球性社会问题的缩影。尽管有过去几十年令人瞩目的经济增长,中国所面临的许多社会问题则远没有得到缓和或解
  • 缅因号战列舰 (ACR-1)缅因号(USS Maine ACR-1),是美国海军的一艘6682吨级二等战列舰,她以美国缅因州的名字命名。该船的爆炸和沉没成为了美西战争的导火索,关于她真正的沉没原因直到现在仍是个谜。缅
  • 分布式事务协调器微软分布式事务协调器 (DTC)是Windows操作系统自Windows 2000引入的跨多种资源,如数据库、消息队列、文件系统,跨应用程序域、进程、机器以至跨网络的分布式事务处理的所有参与
  • 利珀亲王国利珀亲王国(Lippe-Detmold)是德国历史上的一个国家。首都设在德特摩德。利珀建国于1123年。1871年,利珀加入德意志帝国。1918年,亲王退位,利珀改为利珀自由邦。利珀如今是北莱茵-
  • 流密码在密码学中,流密码(英语:Stream cipher),又译为流加密、数据流加密,是一种对称加密算法,加密和解密双方使用相同伪随机加密数据流(pseudo-random stream)作为密钥,明文数据每次与密钥
  • 乔治·赫伯特乔治·赫伯特(英语:George Herbert,1593年4月3日-1633年3月1日),英国诗人、演讲家和牧师。他家境良好,接受了良好的教育,后来在剑桥大学及国会都拥有很高地位。在剑桥三一学院时,他的