C和C++运算符

✍ dations ◷ 2025-11-22 12:27: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  }

安全问题

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

相关

  • 锂离子聚合物电池锂聚合物电池(英语:lithium polymer,缩写:Li-Po),又称聚合物锂电池、聚锂电池,是一种锂离子电池。锂聚电池通常是由数个相同的平行子电池芯(secondary cells)来增加放电电流,或由数个
  • 成骨作用成骨作用指硬骨的生成,过程主要是以软骨为主的结缔组织被骨细胞取代,并引起血管新生,带来钙离子以利硬骨细胞合成骨质。成骨的过程又基于生长的模式分为:软骨内骨化、膜内骨化。
  • 梅肯梅肯(英语:Macon /ˈmeɪkən/),正式名称梅肯-比伯县(Macon–Bibb County),位于美国佐治亚州首府亚特兰大市东南约81英里(约130公里)处,人口约15万,是该州第五大城市、工业重镇,其传统产
  • 大不列颠与爱尔兰联合法令《1800年联合法案》(Act of Union 1800)于1800年8月1日经王室同意通过,于1801年1月1日联合爱尔兰王国和大不列颠王国(根据《1707年联合法案》合并英格兰王国和苏格兰王国而成)成
  • 肠子小肠(英语:small intestine、拉丁语:Intestinum tenue)是消化系统的一部分,从在胃部后面一直延伸至大肠,是进行食物消化与吸收的主要器官。对于无脊椎动物而言,一般会采用消化系统
  • D09(Antifungals for dermatological use)(Emollients and protectives)(Preparations for treatment of wounds and ulcers)(Antipruritics, including antihistamines, anesthetics,
  • 马唐马唐(学名:Digitaria sanguinalis)是一种禾本科马唐属的植物。全世界温带、热带地区广泛分布,通常只被人们当作一种杂草,但德国和波兰人有时也会食用马唐。
  • 钝角在几何学中,角(拼音:jiǎo,注音符号:ㄐㄧㄠˇ)是由两条有公共端点的射线组成的几何对象。这两条射线叫做角的边,它们的公共端点叫做角的顶点。一般的角会假设在欧几里得平面上,但在
  • 清华同方坐标:40°21′25″N 116°49′10″E / 40.357037°N 116.819504°E / 40.357037; 116.819504同方股份有限公司 (上交所:600100),前称清华同方股份有限公司,母公司是清华控股有限公
  • 意诺增爵十三世教宗意诺增爵十三世(拉丁语:Innocentius PP. XIII;1655年5月13日-1724年3月7日)原名弥额尔-安杰洛·孔蒂(Michelangelo Conti),1721年5月8日当选罗马主教,同年5月18日即位至1724年3月