C和C++运算符

✍ dations ◷ 2025-12-01 05:25:36 #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  }

安全问题

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

相关

  • 化学合成在化学中,化学合成是以得到一种或多种产物为目的而进行的一系列化学反应。合成通常表现为通过物理或化学方法操纵的一步或多部反应。在现代的实验室应用中,合成通常暗示整个过
  • 魁人政团魁人政团(法语:Bloc Québécois),又译魁北克集团,是加拿大一个联邦政党。该党一直追求魁北克独立,曾在1995年主导魁北克独立公投。该政党最重要的政纲是支持魁北克省脱离加拿大联
  • 颂龙旗清朝订定国歌起源于19世纪末、20世纪初。19世纪后期至20世纪初,清朝曾先后使用《普天乐》、《李中堂乐》、《颂龙旗》作为其半官方国歌或代国歌。1911年,清政府将《巩金瓯》定
  • 贝雷夸贝雷夸(法语:Berekua),又称格兰德贝(Grand Bay),是加勒比海岛国多米尼克圣帕特里克区的一个村庄,也是该区的首府和最大聚居地,位于该岛西南海岸,海拔高度29米,2001年人口2,288人。
  • 切恩镖鲈切恩镖鲈为辐鳍鱼纲鲈形目鲈亚目河鲈科的其中一种,分布于美国肯塔基州一条流入密西西比河的支流,体长可达7.1公分,栖息在流动缓慢的溪流或池塘。 维基物种中有关切恩镖鲈的数据
  • 阿修罗 (2018年电影)《阿修罗》是一部改编自佛教神话的中国史诗、奇幻电影,这是特技协调员张鹏的导演初作,这部电影是三部曲中的第一部,于2018年7月13日上映。影片通过神话中长有三头的阿修罗寻找
  • 伊娃的波尔卡伊娃的波尔卡(芬兰语:Ievan Polkka)是一首来自芬兰的波尔卡舞曲,也是斯堪的纳维亚的地方歌谣。歌曲是由埃伊诺·凯图宁(芬兰语:Eino Kettunen)在1930年代以东欧传统的民谣波尔卡调
  • 僵尸舞娘《僵尸舞娘》(英语:)是一部2008年丧尸喜剧片(英语:Zombie comedy),由杰·李执导、编剧、拍摄和剪辑。主演包括罗伯特·英格兰、珍娜·詹姆森、佩妮·德雷克(英语:Penny Drake)及萝西·
  • Ice-T崔西·劳伦·马洛(英语:Tracy Lauren Marrow,1958年2月16日-),常用艺名“Ice-T”,是美国的饶舌说唱歌手、金属歌手、演员。他1980年代以饶舌说唱打开自己的职业生涯,后在1987年与Sir
  • 纳木扎勒多尔济纳木扎勒多尔济(?-1777年)蒙古族,鄂尔多斯左翼前旗人,鄂尔多斯左翼前旗札萨克固山贝子。1740年,纳木扎勒多尔济继袭鄂尔多斯左翼前旗札萨克固山贝子。1765年,纳木扎勒多尔济任鄂尔多