C和C++运算符

✍ dations ◷ 2025-12-07 05:53:05 #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  }

安全问题

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

相关

  • 儿科小儿科(或称儿科)是现代医学的一个分支,专门医疗患病的婴儿、儿童及青少年。最大的年龄通常至青春期。一个受到这方面知识专门训练的医生被称作儿科医生。
  • 细胞毒性细胞毒性(英语:Cytotoxicity)是指细胞受到释放出的有毒物质而引起的细胞毒性反应。化疗药物具有细胞毒性,一旦进入体内,能区分哪些是癌细胞和正常细胞,达到了杀癌细胞,保护正常细胞
  • 吞噬细胞吞噬细胞为一类防卫细胞,它们透过吞噬细菌、坏死细胞和凋亡细胞等有害物质来保卫有机体。其原文“Phagocytes”的前半部来自希腊语“phagein”(意为“食用、吞食”),后半部“-cy
  • 珍珠项链珍珠项链来自于英语的性俚语“pearl necklace”,是指男性在另一人的颈部、胸膛或乳房上射精,因为精液在沾停于胸颈部类似于透明的珍珠项链,故此得名。珍珠项链的成因可能是乳交
  • 炭可以指:
  • 雅辛尼·艾迪利雅辛尼·艾迪利(法语:Yacine Adli,2000年7月29日-),是一名法国足球运动员,现时效力法国足球甲级联赛球队波尔多,曾效力于巴黎圣日耳曼。司职中场。2018年5月19日,艾迪利于联赛煞科战
  • 何碧辉何碧辉(1904年-1994年),福建厦门人,中华人民共和国政治人物。妇产科专家。1956年补选第一届全国人民代表大会代表。担任华东军区医院妇产科主任、南京军区八二医院院长等职。
  • 兼崎健太郎兼崎健太郎(1984年6月2日-),日本的模特儿、演员。所属经纪公司为GRAN hips。兼崎健太郎本人部落格兼崎健太郎官方网站
  • 战士号战士号(Warrior)是一艘私建私有的蒸汽船,在黑鹰战争期间被美国政府征用以协助军事行动。 战士号由约瑟夫·特罗克莫顿(Joseph Throckmorton)于1832年于宾夕法尼亚州匹兹堡建造并
  • 死亡日记 (2007年电影)电影从一个新闻摄影师和记者的镜头开始,他记录了一个移民的人,在自杀之前,杀害了他的妻子和儿子的故事。儿子和妻子变成僵尸,杀死几个医务人员和警察,但仍留有一个军医和被杀害之