C和C++运算符

✍ dations ◷ 2025-12-06 03:32:02 #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  }

安全问题

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

相关

  • 器官衰竭多重器官衰竭(英语:Multiple organ failure)或称多器官功能障碍综合征(英语:Multiple organ dysfunction syndrome、MODS)、多系统器官衰竭(英语:Multiple-system organ failure)、多
  • 阿法尔语阿法尔语(Afar,Qafár af)属于低地东库希特语支,与萨霍语(Saho language)最接近,使用的地区包括埃塞俄比亚、厄立特里亚和吉布提,使用者的识字率约百分之1至3,而使用阿法尔语的阿法尔
  • 杨国强杨国强(1950年3月5日-),中华民国陆军中将退役,生于台湾新竹市眷村,籍贯河南省新野县,毕业于陆军官校正41期装甲兵科、南非共和国陆军学院、美国陆军战争学院,在国安会秘书长高华柱掌
  • 水路航运(Shipping)表示透过海上运输和空中运输等方式来运送人或货物。一般来说海上运输的所需时间较长,但运费较为低廉,这是空中运输与陆路运输所不能比拟的。海上运输每次航程能运
  • 美国电影美国电影,常常使用“好莱坞”(英语:Hollywood)作为代称,是指在美国或者由美国制片商制作的电影,其对世界电影史有着极其深远的影响。美国电影产业之历史可以分为四个主要阶段: 无声
  • 自由职业自由职业(英语:Freelance,自由工作者或简称自由业)较早以前是指自由作家、自由记者等,没有隶属于任何公司或和特定公司签订专属契约的职业型态。派遣职员因为和派遣公司签订契约,
  • 熵 (生态学)熵在生态学中是表示生物多样性的指标。假定一个个体无限的总体内,存在n种动植物 ( A 1
  • 陈敬宗明《三才图会》载《国子祭酒陈公像》陈敬宗(1377年-1459年),字光世。浙江承宣布政使司明州府慈谿县(在今浙江省宁波市)人。明朝政治人物,官至南京国子监祭酒,与北京国子监祭酒李时勉
  • 田村伊知郎田村伊知郎(日语:田村 伊知郎/たむら いちろう ,1994年9月19日-)是一名出身于日本兵库县神户市的棒球选手,司职投手,目前效力于日本职棒埼玉西武狮。74 西口文也 | 76 阿部真宏 | 7
  • 莉莉·詹姆斯莉莉·克洛伊·妮娜特·汤姆森(Lily Chloe Ninette Thomson,1989年4月5日-),艺名莉莉·詹姆斯(Lily James),是一名英国英格兰女演员。著名角色是时代剧《唐顿庄园》中的罗丝·麦克莱