C和C++运算符

✍ dations ◷ 2025-12-03 19:06:39 #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  }

安全问题

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

相关

  • 言部,为汉字索引中的部首之一,康熙字典214个部首中的第一百四十九个(七划的则为第三个)。就繁体中文来说,言部归于七划部首,而简体中文来说言部归于二划部首。言部只以左、下方为
  • 情人节情人节(英语:Valentine's Day),在西方也称为圣瓦伦廷节(英语:Saint Valentine's Day),在每年的公历2月14日。近年,情人节被指过于商业化。基于宗教理由,南亚和中东等某些地区,情人节的
  • 亚拉巴马州截至2010年亚拉巴马州(英语:Alabama,i/ˌæləˈbæmə/,又译作阿拉巴马州)是美国东南部地区一个联邦州。北接田纳西州,东邻乔治亞州,南至佛罗里达州和墨西哥湾,西临密西西比州。亚
  • 史广多史广多(英语:Squanto,又名Tisquantum,1585年1月1日-1622年11月30日),是一位美国帕图西特部落原住民。他是帮助朝圣者度过在新大陆第一个冬天的两个印地安人之一(另一人叫Samoset)。他
  • 蒙特利尔工程学院蒙特利尔工程学院(又称蒙特利尔工学院、蒙特利尔大学工学院、蒙特利尔综合理工学院,法文:École Polytechnique de Montréal)是蒙特利尔大学的工程学院(School of Engineering),创
  • 553年
  • 荷西·恩卡纳西欧·罗梅洛体育场荷西·恩卡纳西欧·罗梅洛体育场是位于委内瑞拉马拉开波的一座多功能体育场。该体育场可容纳40800名观众,建造费用为1410万美元。荷西·恩卡纳西欧·罗梅洛体育场也是2007年
  • 皇家图书馆皇家图书馆(Royal Library)是指:
  • 示范性高中示范性高中全称“示范性普通高中”,是中国大陆的各地教育主管部门因政策原因停止授予“重点中学”称号以后,对各地优质高中授予的新称号。各地对“示范性高中”的称号略有不同
  • 叶格依舍·恰连茨叶格依舍·恰连茨(亚美尼亚语:Եղիշե Չարենց;1897年3月13日 - 1937年11月27日)是亚美尼亚诗人,作家和公共活动家。恰连茨 是二十世纪杰出的诗人,在众多从他在第一次世界