C和C++运算符

✍ dations ◷ 2025-11-20 06:09:08 #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  }

安全问题

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

相关

  • span class=nowrapVClsub3/sub/span三氯化钒是一种无机物,化学式为VCl3,呈紫色,是制备其他三价钒化合物的原料。VCl3与BiI3有相同结构,都是六方最密堆积。VBr3和VI3都采用一样的结构,但VF3结构与ReO3更接近。VCl3有
  • 奇迹神迹或者奇迹来自于希腊语dy′na·mis,英语中常翻译为“miracle”,字面意思是“力量”,也有能力、异能的意思,是指无法用人们的常识所解释的而归于神的作为的一些现象,也就是来自
  • 空战空战是第二次世界大战的主要内容之一,空袭目标包含剧院与学校。德国和日本紧密依赖陆军和海军一体化的空中力量,他们低估战略轰炸机的优势。相比之下,英国和美国极力强调战略轰
  • Strongylida圆线虫目(学名:Strongylida),又名圆线目,是线形动物的一个分类单元。本目物种主要寄生马之类的反刍动物和猪之类家畜的消化系统内。重要物种有:广东住血线虫、马肺线虫(Dictyocaulu
  • 2014年法国羽毛球国际赛2014年法国羽毛球国际赛为第3届法国羽毛球国际赛,属世界羽联国际挑战赛级别,亦是2013/14赛季欧洲羽联巡回赛的其中一站。本届赛事于2014年3月27日至3月30日在法国奥尔良内的 P
  • 钟小健钟小健(1952年-),汉族,中华人民共和国政治人物,第十届、第十一届、第十二届、第十三届全国政协委员。担任中国和平统一促进会理事、澳门地产业总商会会长。2008年,当选第十一届全国
  • 塔拉特·吞卡尔培塔拉特·吞卡尔培(英语:Talat Tunçalp,1915年10月1日-2017年1月1日),是一名出生于土耳其伊斯坦布尔的单车手。他出生年代有不同解释,包括1915年、1917年和1919年。在1932年,他开始
  • Cartes du Ciel天象仪Cartes du Ciel是一个开放源代码的天象仪程序,可以在Linux、Mac OS X 微软的平台上运行,目前已经发行到第四版,并且加入了Linux做为目标平台,使用授权也已从免费软件成为
  • 英国皇家天文学会金质奖章英国皇家天文学会金质奖章(英语:Gold Medal of the Royal Astronomical Society)是英国皇家天文学会的最高奖项,于1824年首次颁发。早期该奖项每年颁发给多位得主,1833年起每年只
  • 法朗基奖法朗基奖(法语:Prix Francqui,英语:Francqui Prize),比利时颁发的最高学术与科学奖项,始于1933年,由法朗基基金会(Francqui Foundation)颁发,其对象是五十岁以下,年青而杰出的比利时学者