C和C++运算符

✍ dations ◷ 2025-05-20 04:31:04 #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  }

安全问题

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

相关

  • 皮下气肿皮下气肿(英语:Subcutaneous emphysema),亦被称为组织气肿,是指因空气或气体积存于皮下组织而形成的气肿。皮下气肿中的皮下是指位于皮肤表面下的组织,而气肿则是指积存在皮下组织
  • 冲突冲突,是指两个个体的需求、价值观念和利益引致实际或想像的反对表现。冲突可以是内部(自己内心)或外部(两个或以上的个人或团体)的。尽管所有的文化都注重和平,和平是普世价值之一
  • 乙醇_(医疗用)乙醇是医疗中最常用的杀菌剂、消毒剂及解毒剂。。在医疗中,常会在静脉穿刺前及手术前,用乙醇擦在皮肤,以进行皮肤消毒(英语:disinfect skin),乙醇会擦在要治疗患者的皮肤上,也会用在
  • 吡喃酮吡喃酮(Pyrone)是吡喃的酮类衍生物,是一类六元的含氧杂环化合物。与吡喃一样,根据环中双键和羰基的位置不同,吡喃酮可以有两个异构体:α-吡喃酮和γ-吡喃酮。吡喃酮的结构广泛存在
  • 西便制《西便制》(韩语:서편제)是韩国导演林权泽执导的一部讲述一个韩国盘索里传统艺术家庭的1993年音乐故事片。该片上映之时并没有期待有很大的观众群,因此最初只是在首尔的一家影院
  • 抗炎性抗炎性(英语:Anti-inflammatory)指物质或治疗能减少炎症的特性。消炎药占约止痛药的一半。消炎药以消炎作用来减少疼痛,与鸦片类药物不同,后者影响中枢神经系统以阻断疼痛讯号传
  • 麦可·史维纳麦可·史维纳(英语:Michael Henry Schwerner,1939年11月6日-1964年7月21日),是三位在美国密西西比州被三K党杀害的种族平等协会(英语:Congress of Racial Equality)(CORE)工作人员之一
  • 最后的胜利《最后的胜利》是黎锦晖在国民革命军北伐期间所创作的一部歌舞剧。监狱长用鞭子抽打囚徒。工人、农民拿起了斧头、锄头,冲进监狱,打到了监狱长,解救了囚徒,大家欢庆胜利。这部剧
  • 东革阿里东革阿里-Tongkat Ali(马来语), 学名 是生长于马来西亚, 印度尼西亚, 在较小程度上泰国,越南,老挝和印度等地的雌雄异株长绿树,有"马来西亚人参"的美名。 东革阿里是生长在东南
  • 伊朗信息和通信技术部伊朗政府与政治 系列条目伊朗信息和通信技术部(波斯语:وزارت ارتباطات و فناوری اطلاعات‎)于1908年创建,是负责伊朗的邮政服务、电话及信息技术的