C和C++运算符

✍ dations ◷ 2025-08-13 19:01:08 #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  }

安全问题

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

相关

  • 白点症病毒白点症病毒(英语:White spot syndrome,简称WSS),是存在于虾类的一种病毒,此病毒只存在于虾类,但是由于病毒的毒性跟高传染性,所以很快就会把大量的虾群杀死。此病毒对虾场经济上和繁
  • 化学治疗药化学治疗药可以分为分类药物列表 合成药物列表 药物名称列表
  • 钮祜禄氏庶妃钮祜禄氏,博克瞻之女。清朝太祖努尔哈赤的庶妃。她与跟喇克达之女庶妃兆佳氏同在万历十二年 (1584年)入宫,属于努尔哈赤最早期的妾侍,努尔哈赤此时的妻妾仅有佟佳氏福晋哈哈
  • 芝加哥大都市区芝加哥大都市区(英语:Chicago metropolitan area)是指范围包括美国伊利诺伊州芝加哥市及其郊外的大都市区。芝加哥大都市区的定义并不统一,按照美国行政管理和预算局的定义,芝加
  • 高雄市 (州辖市) 纹章高雄市(たかおし),存在于1924年至1945年的台湾日治时期行政区划,隶属高雄州,由高雄郡高雄街升格而来,二次大战后改为台湾省高雄市。于1924年12月25日由高雄州高雄郡高雄街升
  • 长角蛾长角蛾()是日间活动的鳞翅目,属于长角蛾科。翅膀阔约14-18毫米。雄性或雌性长角蛾的上翅膀都是金属绿色,而下翅膀则是青铜色的。雄性长角蛾有非常长及白色的触角,头上有粗糙及黑
  • 九二一震灾重建基金会财团法人九二一震灾重建基金会(简称九二一基金会)是台湾九二一地震后,行政院为统筹运用“行政院九二一赈灾专户”(由社会各界汇集的九二一地震赈灾捐款专户),宣布由民间与相关单位
  • 爱德华·赖特 (数学家)爱德华·赖特 (数学家)(英语:Edward Wright),(1561年-1615年),文艺复兴时期欧洲英格兰数学家。在一次航海去亚速尔群岛后,他致力于航海误差方面的研究。他曾向东印度公司的成员就这一
  • GateboxGatebox是日本新开发的模拟养成系统,也可以称为3D显像器,是利用一个圆柱体弧面玻璃中以立体的方式呈现一个3D的动漫人物,人物具有通话功能,能够链接手机进行类似短信的交流,也可
  • 庄重文文学奖庄重文文学奖,是由原庄士机构国际有限公司主席、中华文学基金会顾问庄重文于1987年倡议出资,由中华文学基金会主办的一项青年文学奖。其宗旨为“弘扬中华民族文化,推动和繁荣当