C和C++运算符

✍ dations ◷ 2025-11-23 09:01:07 #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  }

安全问题

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

相关

  • 格勒诺布尔格勒诺布尔(法语:Grenoble,法语发音:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentiu
  • 尼罗河三角洲尼罗河干流进入埃及北部后在开罗附近散开汇入地中海,形成了尼罗河三角洲。它以开罗为顶点,西至亚历山大港,东到塞德港(Port Said),海岸线绵延230公里,南北长约160公里,东西宽250公里
  • 生存分析生存分析(Survival analysis)是指根据试验或调查得到的数据对生物或人的生存时间进行分析和推断,研究生存时间和结局与众多影响因素间关系及其程度大小的方法,也称生存率分析
  • 土地征用权征收(又称土地征用权)系指政府为促进物品利用、增进公共利益,而兴建各种设施,基于政府公权力之作用,依法定程序,取得特定私有物品,并给予当事者相当补偿之行为。政府对土地及所属房
  • 周波 (1956年)周波(1956年-),男,汉族,广东海丰人,中华人民共和国政治人物,中国共产党党员。中山大学政治经济学专业毕业。周波曾担任国务院港澳事务办公室副主任、党组成员。2013年,当选第十二届全
  • 达鲁恩·阿亚萨姆伊达鲁恩·阿亚萨姆伊(英语:Dharun Ayyasamy,泰米尔语:தருண் அய்யாசாமி,1996年12月31日-)生于泰米尔纳德邦蒂鲁布尔县,是一名印度田径运动员,主攻400米赛跑以及400米跨栏
  • 林达泉林达泉(1830年-1878年),字海岩,广东大埔人,清朝官员。林达泉于咸丰十一年(1861年)中式举人。其留心经济,熟悉今古舆图及外洋各国形势,曾入江苏巡抚丁日昌幕府。后返乡,督办团练,防剿太平
  • 阿山 (伊拉哩氏)阿山(满语:ᠠᠰᠠᠨ,穆麟德:,太清:,大词典:;?年-1714年),伊拉哩氏。满洲镶蓝旗人。中国清朝官员,自吏部笔帖式历迁刑部主事、户部员外部。康熙十八年(1679年)特授翰林院侍讲,充日讲起居注官,改
  • 天主教拉菲亚教区天主教拉菲亚教区(拉丁语:Dioecesis Lafiensis)是尼日利亚一个罗马天主教教区,属阿布贾总教区。教区于2000年12月5日成立,位于纳萨拉瓦州;2004年时有教友189,686人(占辖区人口10.2%
  • 滨村弘一滨村弘一(1961年2月8日-),日本企业家、编辑,出生于大阪府。笔名滨村通信。滨村1985年从早稻田大学第一文学部毕业后,在JICC出版局(现宝岛社)担任电脑游戏编辑,后进入ASCII担任《Login