C和C++运算符

✍ dations ◷ 2025-07-02 19:45:51 #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  }

安全问题

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

相关

  • IL-81ICW, 1IKL, 1IKM, 1IL8, 1ILP, 1ILQ, 1QE6, 1ROD, 2IL8, 3IL8· protein binding· response to molecule of bacterial origin · cellular component movement · infl
  • 喷昔洛韦喷昔洛韦(Penciclovir)是鸟嘌呤类似物类抗病毒药物, 用于治疗多种疱疹病毒感染。具有毒性低,病毒敏感性高等特点。喷昔洛韦口服吸收低,常用于局部给药。 泛昔洛韦是喷昔洛韦的前
  • 石棉沉滞症石绵沉滞症也称为石绵肺,是一种石绵纤维造成肺长期发炎及纤维化留疤(英语:Pulmonary fibrosis)的病症,症状有呼吸困难、咳嗽、喘鸣和胸痛,可能带来的并发症有肺癌、间皮瘤和肺性心
  • 苏珊·海华苏珊·海华(英语:Susan Hayward,1917年6月30日-1975年3月14日),美国女演员,曾获得奥斯卡最佳女主角奖。
  • 可兑换比索可兑换比索(Peso Convertible),是古巴的一种货币,货币符号为CUC。类似于中国大陆以前的外汇券。可兑换比索在2004年古巴禁止美元流通以前与美元等值,至2017年时,若以美金直接兑换
  • 国道352号国道352号是日本由新潟县柏崎市至栃木县河内郡上三川町的一般国道。从新潟县中部起横穿福岛县南会津地方、采用通过栃木县的路线、新潟・福岛县境以外相当部分为与其他国道
  • 莱翁·彼得拉日茨基莱翁·彼得拉日茨基(Leon Petrazycki,1867年 - 1931年)是波兰著名哲学家和法学家,以其国家与法的理论著称。彼得拉日茨基1867年生于波兰维捷布斯克,当时波兰正处于俄国统治之下。
  • 量子杂志《量子杂志》()是由西蒙斯基金会(英语:Simons Foundation)于2012年起发行的编辑独立的免费在线出版物,内容涵盖数学、理论物理学、理论计算机科学与基础生命科学等。其最初名为《
  • 朱迪矩阵朱迪矩阵(Judy array)是一个计算机科学和软件工程学中的名词,是一种高性能、低内存消耗的数据结构,实现了关联数组的功能。与普通数组不同,Judy array可以是稀疏的,这一点更像是散
  • 约翰·辛格·萨金特约翰·辛格·萨金特(John Singer Sargent,1856年1月12日-1925年4月14日),美国艺术家,因为描绘了爱德华时代的奢华,所以是“当时的领军肖像画家”。他在一生中创作了900幅油画,2,000