C和C++运算符

✍ dations ◷ 2025-07-11 16:52:48 #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  }

安全问题

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

相关

  • 史上票房最高的电影全球最高电影票房是在全球上映的电影票房等相关列表。数字只包含影院票房收入,不包含其他营利方式的收入,(如光盘租售、电视播映等)。票房以美元为单位。更新日期:2020年3月25日
  • 美国运通美国纽约州纽约市美国运通(American Express,NYSE:AXP)是一间总部位于美国纽约市的金融服务公司。该公司最著名的业务是信用卡、签账卡(charge card)以及旅行支票。美国运通的普通
  • 福特野马福特野马是由福特汽车公司所推出的跑车。野马原本的汽车平台是属于第二代北美洲的福特猎鹰。原版的福特野马I 4座位概念车改进成了1963年的野马II 双座位的原型,是福特用于预
  • 海虾养殖海虾养殖是水产养殖的一形式,以放养具经济价值的虾类为主。商业海虾养殖场开始于20世纪70年代,饲养海虾以供人食用。海虾生产量急剧增长以满足市场的需求──尤其是美国、日本
  • 非建制地区非建制地区(英语:Unincorporated area)普遍存在于美国、加拿大、澳大利亚等国家,是指一个地区并没有自治权,而是被更高层的行政区划(例如国家、省、州、郡或县)所管理。通常当一个
  • 天主教达累斯萨拉姆总教区天主教达累斯萨拉姆总教区 (拉丁语:Archidioecesis Daressalaamensis;斯瓦希里语:Jimbo Kuu la Dar-es-Salaam)是坦桑尼亚一个罗马天主教教省总教区,下辖五个教区。南桑吉巴宗座监
  • Celeb FiveCeleb Five(韩语:셀럽파이브)是韩国的四人女子组合,成员包括宋恩伊、金信英、申奉仙、安英美。金信英看到日本大阪府立登美丘高等学校舞蹈部(TDC,Tomioka Dance Club)的表演后受到
  • 林天助林天助主教(Bishop Joseph Lin Thien-chu, 1935年1月7日-1994年3月4日),罗马天主教主教。台湾天主教第一位于梵蒂冈晋铎之神父。林天助1935年1月7日生于台湾云林县埔羌仑,1961年12
  • 维克多·阿德勒维克多·阿德勒(德语:Victor Adler,1852年6月24日-1918年11月11日),奥地利政治家,工人运动领袖,奥地利社会民主党创始人,生于布拉格,犹太商人之子,曾于维也纳大学学习化学和医学。1881
  • 倒债倒债,泛指个人或公司因采取破产或清算或落跑(夜逃),导致持有支票债权人或持有债券的投资人血本无归。