C和C++运算符

✍ dations ◷ 2025-06-10 09:43:20 #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  }

安全问题

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

相关

  • 第一人称射击游戏第一人称射击游戏(英语:First-person shooter,简称FPS)是以玩家的第一人称视角为主视角进行的射击类电子游戏的总称,通常需要使用枪械或其他武器进行战斗。玩家会直接从游戏的主
  • 新泽西州立大学罗格斯大学,全称新泽西州立罗格斯大学,简称罗大(Rutgers, The State University of New Jersey /ˈrʌtɡərz/)是美国新泽西州的最大高等学府,是一所公立研究型大学,名列公立常春
  • 4个月3星期零2天《4个月3星期零2天》(罗马尼亚语:4 luni, 3 săptămâni şi 2 zile),2007年罗马尼亚的一部电影,由克里斯蒂安·蒙久编写并执导。该片曾在2007年第60届戛纳国际电影节获得金棕榈
  • 光市光市(日语:光市/ひかりし  */?)是位于日本山口县东南部的一个市。日本首任内阁总理大臣伊藤博文出身于该市。在江户时代,此地属于毛利藩的支藩。在1938年,日本帝国海军决定在此
  • 媒体森林媒体森林(英语:Media Forest)是以色列的一个音乐产业服务提供商,于2005年在以色列内坦亚建立。法国、阿根廷、摩尔多瓦、比利时、保加利亚、罗马尼亚、希腊和瑞士均拥有公司的加
  • 武克·德拉什科维奇武克·德拉什科维奇(塞尔维亚语:Вук Драшковић, .mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Un
  • 多米尼卡·齐布尔科娃多米尼卡·齐布尔科娃(斯洛伐克语:Dominika Cibulková,1989年5月6日-),斯洛伐克女子网球运动员。齐布尔科娃在布拉迪斯拉发成长,2005年转为职业球手,在四大网球大满贯赛事中都曾进
  • Gaon Chart Music AwardsGaon Chart Music Awards(韩语:가온 차트 K-POP 어워드,舊名為Gaon Chart K-POP Awards)是依据Gaon Chart统计数据授奖的年度大型颁奖礼,自2012年开始于每年二月颁发前一年的奖项
  • 李明珠李明珠可以指:
  • 干蒸汽干蒸汽(英文:Dry steam),蒸汽中不含有任何水分称为“干蒸汽”。与另一干饱和蒸汽(英文:Dry saturated steam)不同的是,干饱和蒸汽是对饱和蒸汽继续加热,使之不再含有任何水分,称为“干