C和C++运算符

✍ dations ◷ 2025-11-21 03:52:45 #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  }

安全问题

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

相关

  • 上呼吸道感染上呼吸道感染(医学上简称URTI或URI),是指发生在上呼吸道的急性感染,位置可以在鼻腔、鼻窦、咽头和喉咙。上呼吸道感染包括普通感冒、流行性感冒、鼻咽炎、扁桃腺炎及喉炎等。感
  • 尼美舒利尼美舒利是一种人工合成的COX-2特异性抑制剂,为非类固醇消炎止痛药,具有镇痛和退热的作用。尼美舒利被用于治疗12岁以上成人的疼痛、退化性关节炎和痛经等。因为有出现肝中毒
  • 番茄红素2,6,10,14,19,23,27,31- Octamethyldotriaconta- 2,6,8,10,12,14,16,18,20,22,24,26,30- tridecaene番茄红素(Lycopene、分子式 C40H56)是一种明亮红色的类胡萝卜素颜料,在番
  • 台北第三高女台北市立中山女子高级中学,简称中山女高或中山女中,旧称台北第三高女、北二女中,创立于1897年,是一所位于台北市中山区的女子高中北市六省中之一,亦为台北市三所公立女子高中之一
  • 葛底斯堡之役葛底斯堡战役(英语:Battle of Gettysburg,1863年7月1日至7月3日)于宾夕法尼亚州葛底斯堡及其附近地区爆发,是美国内战中最血腥的一场战斗,经常被引以为美国内战的转捩点。此役是由
  • 布克科里·安东尼·布克(英语:Cory Anthony Booker;1969年4月27日-),是一位美国民主党政治人物,自2013年成为新泽西州联邦参议院议员。布克出生于华盛顿特区,在新泽西州博根县的哈灵顿柏
  • 反射 (物理学)反射(拉丁文:Reflectio;法文、英文:Reflection;德文、西班牙文:Reflexion)是一种物理现象,是指波阵面从一个介质进入另一个介质时,在两个介质的界面处,其传播方向发生改变,而返回其原介
  • 安东·阿洛伊斯 (霍亨索伦-锡格马林根)安东·阿洛伊斯(德语:Anton Aloys Meinrad Franz von Hohenzollern-Sigmaringen,1762年6月20日-1831年10月17日),霍亨索伦-锡格马林根亲王,1785年至1831年在位。1782年,安东·阿洛伊
  • 潘惟溥潘惟溥(越南语:Phan Duy Phổ/.mw-parser-output .han-nom{font-family:"Nom Na Tong","Han-Nom Gothic","Han-Nom Ming","HAN NOM A","HAN NOM B","Ming-Lt-HKSCS-UNI-H","Min
  • 烈风警报 烈风警报(别称:大风警报,英语:Gale Warning)是指气象机构对正在或即将遭遇相当于蒲福风级中的