C和C++运算符

✍ dations ◷ 2025-07-11 15:15:58 #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  }

安全问题

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

相关

  • 康方言康方言是藏语三大方言之一,又称康巴语,主要分布在康区。与卫藏方言相似,有声调。康方言内部差异较大。《中国语言地图集》(1987年)将其分成六个土语:其中卓尼土语和舟曲土语的使用
  • 美国国会法国会法(英语:Act of Congress,常被误译为法案或与其混淆)是由美国宪法授权美国政府所制定颁布的成文法。当议案在国会两院以简单多数的得票通过,接着再由总统签署后即完成立法,并
  • 公公公公可以指:
  • 泸溪泸溪县位于湖南省湘西土家族苗族自治州东南,县治所位于:武溪镇,面积1569平方公里,国产值总量为77001万元(公元2003年),人口31.4万(2015年第六次人口普查,含外来人口,不包括外出人口),是
  • 阿斯伯格综合征阿斯伯格综合征(英语:Asperger syndrome,简称 AS),是广泛性发育障碍(PDD)中的一种综合征,属于自闭症谱系障碍(ASD)。其重要特征是社交与非言语交际的困难,同时伴随着兴趣狭隘及重复特定
  • 伊藤宗一郎伊藤宗一郎(1924年3月21日-2001年9月4日),日本政治人物。曾担任十三届的众议员、以及科学技术厅长官、防卫厅长官、众议院议长等职务。第二次大平内阁 (模板)改造内阁 (1980年7月17
  • 太空部队《太空部队》(英语:)是由史提夫.加维与格雷格丹尼尔斯创作的美国喜剧影集,于2020年5月29日在Netflix开播。本影集描述了在美国的第六个军事部门和第一个新设军种-太空军,其故事聚焦
  • 伊莎贝拉25美分硬币伊莎贝拉25美分硬币(英语:Isabella quarter)又名哥伦布博览会25美分硬币(英语:Columbian Exposition quarter),是1893年铸造的一种美国纪念币,由联邦国会应芝加哥哥伦布纪念博览会女
  • 弗拉基米尔·谢尔盖耶维奇·伊留申弗拉基米尔·谢尔盖耶维奇·伊留申(俄语:Владимир Серге́евич Ильюшин,1927年3月31日-2010年3月1日),苏联空军少将、试飞员。航空航天工程师谢尔盖·伊
  • 工作与时日《工作与时日》(古希腊语:Ἔργα καὶ Ἡμέραι,)为古希腊诗人赫西俄德于大约公元前7世纪所写的田园牧诗,系统地记录了当时农耕生产的知识,表现了平静而优美的农村生活场