C和C++运算符

✍ dations ◷ 2025-12-04 17:22:46 #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  }

安全问题

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

相关

  • 乳铁蛋白1B0L, 1BKA, 1CB6, 1DSN, 1EH3, 1FCK, 1H43, 1H44, 1H45, 1HSE, 1L5T, 1LCF, 1LCT, 1LFG, 1LFH, 1LFI, 1LGB, 1N76, 1SQY, 1U62, 1VFD, 1VFE, 1XV4, 1XV7, 1Z6V, 1Z6W, 2BJJ
  • 肾上腺素受体激动药肾上腺素刺激剂(英语:Adrenergic agonist)指的是激发肾上腺素受体功能的药物。 肾上腺素受体的主要分类有五种:α1、α2、β1、β2、和 β3。肾上腺素的作用体(英语:agent)指的是拥
  • 豌豆属豌豆属(学名:Pisum)是豆科蝶形花亚科的一个属,为一年生或多年生草本植物,分布于地中海和西亚。豌豆属有以下两个种:
  • 沈学础沈学础(1938年2月28日-),物理学家。生于江苏溧阳。1958年毕业于复旦大学物理系。1995年当选为中国科学院院士。 中国科学院上海技术物理研究所研究员,复旦大学教授。曾任中国科学
  • 乌斯塔沙乌斯塔沙(Ustaša,Ustaše,又译乌斯塔莎、乌斯达沙、乌斯达莎),为克罗地亚的独立运动组织,Ustasha本意就有起义的意思。乌斯塔沙于1929年4月20日在保加利亚王国的索菲亚成立,其目标
  • 查莉成长日记查莉成长日记()是迪士尼频道原创电视剧集,首播于2010年4月4日。整个剧集围绕邓肯一家展开,核心剧情为其第四个孩子——查莉(Charlie)出生后所发生的故事。在每一集中家中第二个孩
  • 古干原站古干原站(韩语:고건원역)是朝鲜民主主义人民共和国咸镜北道庆源郡的一个铁路车站,属于古干原线。古干原线
  • 3′非翻译区3'非翻译区(英语:three prime untranslated region)简称3'-UTR,是信使核糖核酸(mRNA)中,紧接在编码区之后的序列。mRNA上除了可以翻译成蛋白质的序列外,还有一些不被翻译的序列,如5端
  • 忽然遇见你《忽然遇见你》(Jab We Met,英语:When We Met)是2007年的印度电影,是一部爱情喜剧。此片在印度市场及海外获得成功,亦是首部使用了“疗愈系女友”(Manic Pixie Dream Girl)概念的现
  • 松平定永松平定永(日语:松平定永/まつだいら さだなが ,1791年10月10日-1838年11月29日)是日本江户时代后期的大名,最初担任陆奥白河藩主,后来成为伊势桑名藩(日语:桑名藩)主,松平定纲(日语:松平