C和C++运算符

✍ dations ◷ 2025-11-21 23:40:26 #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  }

安全问题

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

相关

  • 分娩高潮分娩高潮(英语:birthgasm,orgasmic childbirth)是指在分娩期间所出现的性高潮。一些女性会以性刺激的方式去减轻宫缩,并以此替代麻醉药物。波斯特尔(Postel)于2013年发表了一项调查
  • 暗之末裔《暗之末裔》(日语:闇の末裔)是日本漫画家松下容子在花与梦(白泉社)杂志上连载的少女漫画,2000年改编为电视动画。于2006年6月号开始长期休载,后来传出2011年10月1日号继续连载的消
  • 伯吉斯动物群伯吉斯页岩(Burgess Shale)又译博捷斯页岩,位于加拿大西北的英属哥伦比亚境内的落矶山脉。美国古生物学家查尔斯·都利特·沃尔科特(Charles Doolittle Walcott)于1909年首先发现
  • 文物文物一词,在中国最早是指礼乐制度。《左传·桓公二年》记载,“夫德,俭而有度,登降有数,文物以纪之,声明以发之;以临百官,百官于是乎戒惧而不敢易纪律。”现今则将过去遗留下来的具有
  • 磷酸铋磷酸铋是一种无机化合物,化学式为BiPO4。磷酸铋可由硝酸铋和磷酸二氢钠反应得到。
  • 陈初哲陈初哲(1736年-1787年),字在初,号永斋。江苏元和(今江苏吴县)人。生于乾隆二年(1736年),乾隆三十四年(1769年)状元,授翰林院修撰。卒于乾隆五十二年(1787年)。
  • 田方伦田方伦(1992年1月24日-),生于台北市,中国国民党籍政治人物,为第十四届中国国民党青年团总团长兼指定中央常务委员,世新大学传播研究所硕士生。田方伦善于组织活动,注重对外路线辩论
  • 吉姆兰加尔·达德纳吉约瑟夫·吉姆兰加尔·达德纳吉(法语:Joseph Djimrangar Dadnadji;1954年1月1日-2019年12月31日)是乍得的一个政治家,在2013年担任乍得总理。
  • 山本由伸山本由伸(日语:山本 由伸/やまもと よしのぶ ,1998年8月17日-)是一名出身于日本冈山县备前市的棒球选手,司职投手,目前效力于日本职棒欧力士野牛。73 高山郁夫 | 75 佐竹学 | 76 风
  • 伊德里斯王朝伊德里斯王朝(阿拉伯语:الأدارسة‎ )是公元788年,伊德里斯一世以非斯为中心,在摩洛哥建立的第一个阿拉伯王朝。伊德里斯王朝普遍被视为摩洛哥国家的开始。伊德里斯王朝被