C和C++运算符

✍ dations ◷ 2025-11-24 12:07:03 #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  }

安全问题

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

相关

  • 尸皮尸皮(英语:cadaveric skin),是cadaveric skin的直接翻译,医学上也是称为尸皮或捐赠皮,是处理烧烫伤敷皮种类的一种,主要目的在于保护伤口、避免感染及协助伤者皮肤愈合、生成,而非一
  • 萃取萃取是利用系统中组分在溶剂中有不同的溶解度来分离混合物的单元操作。 按参与萃取的组分状态,萃取可分为两种方式:新型萃取技术:虽然萃取经常被用在化学实验中,但它的操作过程
  • 亚特兰大国际机场哈茨菲尔德-杰克逊亚特兰大国际机场(英语:Hartsfield-Jackson Atlanta International Airport;IATA代码:ATL;ICAO代码:KATL;FAA代码:ATL),简称亚特兰大机场、哈茨菲尔德-杰克逊机场或
  • 三聚甲醛多聚甲醛(IUPAC命名Polyoxymethylene,POM)(或称聚甲醛;聚缩醛),为甲醛的聚合物(高分子量聚甲醛),一般结构长度有八到一百个单位。长链多聚甲醛常用制作于耐热塑胶, 又称聚甲醛塑胶(POE,杜
  • 桑孔语桑孔语是桑孔人的本民族语言,语言归属汉藏语系藏缅语族缅彝语群彝语支。使用人数根据1995年的数据约低于1500人,且多为中老年人,它是中国境内的一种濒危语言,也是直至1990年代才
  • 和歌山县旗和歌山县旗(日语:和歌山県旗/わかやまけんき )是日本的47面都道府县旗之一。该条目是对和歌山县旗以及和歌山章(日语:和歌山県章/わかやまけんしょう)的解说。在公开征集设计方案的
  • 龙刍龙刍,是传说中的一种妖草名,马吃了能日行千里。
  • 恐龙尤物《恐龙尤物》(英语:,标题显示为)是一部2015年首映的美国青少年喜剧电影,由亚利·桑德尔(英语:Ari Sandel)执导,乔许·A·卡根(Josh A. Cagan)执笔,改编自柯蒂·凯普林吉(Kody Keplinger)的
  • 兴权会兴权会全称兴都权益行动委员会(英语:Hindu Rights Action Force, HINDRAF;马来语:Barisan Bertindak Hak-Hak Hindu;泰米尔语:இந்து உரிமைகள் போராட்டக் க
  • 东西洋考《东西洋考》明张燮著,成书于万历四十五年(1617年)。明代的东洋乃是指南海东部及附近诸岛,反之则称西洋。《东西洋考》全书12卷:张燮博览群书,《东西洋考》中引用不下百余部书籍,其