C和C++运算符

✍ dations ◷ 2025-12-01 11:19:49 #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  }

安全问题

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

相关

  • 完备性在数学及其相关领域中,一个对象具有完备性,即它不需要添加任何其他元素,这个对象也可称为完备的或完全的。更精确地,可以从多个不同的角度来描述这个定义,同时可以引入完备化这个
  • 姜黄姜黄(学名:Curcuma longa)又称宝鼎香,为姜科姜黄属植物,在一些亚洲国家称作turmeric或kunyit。其根茎所磨成的深黄色粉末为咖喱的主要香料之一,也用在南洋料理,尝起来味苦而辛,带点
  • 腹侧被盖区腹侧被盖区(英语:Ventral tegmental area,简写为VTA)是中脑的一个区域。这个区域靠近黑质与红核,富含多巴胺与5-羟色胺神经元,是两条主要的多巴胺神经通道的一部分:科学家认为腹侧
  • 心理防卫机制异常心理学 行为遗传学 生物心理学 心理药物学 认知心理学 比较心理学 跨文化心理学 文化心理学 差异心理学(英语:Differential psychology) 发展心理学 演化心理学 实验心理学
  • 顾也鲁顾也鲁(1916年-2009年12月23日),原名顾念椿,学名顾仁祥,曾用名顾忆椿,籍贯江苏吴县,出生于常熟,中国电影表演艺术家,代表作有《梁山伯与祝英台》、《渔家女》、《大富之家》等。2005年
  • 弗朗茨·斐迪南弗朗茨·斐迪南大公(德语:Franz Ferdinand von Österreich-Este,1863年12月18日-1914年6月28日),奥匈帝国皇储,弗兰茨·约瑟夫一世皇帝之弟卡尔·路德维希大公之长子。弗兰茨·约
  • 特殊地位集体特殊地位集体(法语:collectivité à statut particulier)是法国的一种领土集体。根据《法兰西第五共和国宪法》第72条规定,特殊地位集体不属于市镇、省和大区,亦非第73条规定的
  • E·梅尔文·波特爱德华·梅尔文·波特(英语:Edward Melvin Porter;1930年5月22日-2016年7月26日),是美国的民主党政治人物、律师及民权活动家,前俄克拉何马州参议院议员。波特在奥克拉荷马州奥克马
  • 苏利·普吕多姆勒内-弗朗索瓦-阿蒙··普吕多姆(René-François-Armand (Sully) Prudhomme,1839年3月16日-1907年9月6日),法国诗人,首位诺贝尔文学奖获得者。普吕多姆早年学习理科,后转向文学。
  • 张谞行张谞行(1905年-1939年),字春生、春笙,浙江杭州人。1905年1月4日生。早年入北京大学求学,后考入保定陆军军官学校第九期,毕业后分配到浙军,先后任初、中级军职。1926年,入北伐军,参加浙