C和C++运算符

✍ dations ◷ 2025-11-20 21:53: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  }

安全问题

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

相关

  • 联合国人道事务协调厅联合国人道主义事务协调厅(英语:United Nations Office for the Coordination of Humanitarian Affairs,缩写为OCHA)是联合国秘书处的下属机构,根据1991年12月第46届联合国大会第
  • 应力性骨折疲劳性骨折,又称应力性骨折,是一种不完全骨折。通常由于异常的或重复性的外界应力,或者腿部或踝部持续负重所导致。常发生于胫骨、跖骨,以及相对少见的股骨、桡骨。疲劳性骨折是
  • 圭亚那总统圭亚那合作共和国总统为圭亚那政府的国家元首及三军统帅,由多数党领袖出任。当圭亚那在1970年宣布为主权共和国后,总理由圭亚那国民议会选举产生,任期五年,并拥有主要是礼仪性的
  • 德国联邦国防军空军德国联邦国防军空军(德语:Luftwaffe)是指德意志联邦共和国的空军部队。德国在第一次世界大战中战败,按照1919年《凡尔赛条约》,德国空军被解散。但在魏玛共和国后期,德国逐步突破
  • 巴音额日乐巴音额日乐(1963年8月12日-),出生于内蒙古鄂尔多斯市,中国大陆影视演员、导演。毕业于上海戏剧学院,在内蒙古歌舞剧院工作。因出演金庸作品中《天龙八部》的“鸠摩智”和《神雕侠
  • 波多黎各联足球会波多黎各联足球会(Puerto Rico United)是一支位于波多黎各阿瓜达的职业足球会,目前于波多黎各足球联赛角逐。
  • 十六国皇后及妃嫔列表十六国皇后及妃嫔列表列出中国历史上十六国所有的君主配偶。
  • 海纳·穆勒海纳·穆勒(德语:Heiner Müller,1929年1月9日-1995年12月30日),德国剧作家,出生于萨克森地区的埃彭多夫。其作品充满政治关怀。
  • 增春董增春(1866年-?) ,字熙堂,号松如,满姓董乌哩氏,杭州驻防正白旗满洲人,清朝政治人物、进士出身。光绪三十年(1904年),会试第115名。殿试登进士三甲130名。历官浙江即用知县,建德、太平
  • 复小波变换复小波变换或复小波转换(Complex Wavelet Transform)是一个离散小波转换(DWT)的复数形式延伸。它是一个二维小波变换,它提供多分辨率,稀疏表示,以及图像结构的有益特性。另外,他还