C和C++运算符

✍ dations ◷ 2025-12-05 13:49:24 #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  }

安全问题

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

相关

  • 伙友骑兵伙友骑兵(古希腊语:ἑταῖροι;hetairoi),又译伙伴骑兵或马其顿禁卫骑兵,伙友骑兵是马其顿军队中的精锐骑兵,源于马其顿王国的国王骑兵卫队,在腓力二世的扩充改良下,成为马其顿军
  • 分体论在哲学方面,分体论(英文:Mereology;该单词源自希腊语“μερος”;其中,词头“meros”意思是“部分”或者说“组成部分”,而词尾“-logy”则指的是研究、学问、讨论和科学),是指一
  • 澄清湖澄清湖,又称大埤湖(闽南语:toā-pi-ô͘),位于台湾南部高雄市鸟松区,为高雄市的第一大湖,古亦称大埤、大贝湖。蓄水量为337万立方米,有西湖的美誉,是高雄地区著名的观光地区之一,目前
  • 地道战 (电影)《地道战》,中国军事教学电影,1965年上映,导演任旭东,主演朱龙广、王炳彧、张勇手等。2010年同名电视剧《地道战》即以此电影为蓝本。1942年,河北省中部地区高家庄为应对日军袭击
  • 角屹山角屹山(韩语:각흘산)是一座位于韩国江原道铁原郡和京畿道抱川市之间的山峰,主峰标高海拔838米。
  • 何塞·安东尼奥·纳瓦罗何塞·安东尼奥·纳瓦罗 (1795年2月27日至1871年1月13日)是一个德克萨斯的政治家的、革命家、牧场主和商人。他出生于新西班牙圣安东尼奥的一个杰出贵族家庭得克萨斯州纳瓦
  • 泰·柯布球员 底特律老虎(1905年—1926年) 费城运动家(1927年—1928年) 总教练 泰鲁斯·雷蒙·柯布(英语:Tyrus Raymond Cobb,1886年12月18日-1961年7月17日),小名泰·柯布( Ty Cobb),绰号The Geo
  • 效用最大化效用最大化问题(功用最大化),在经济学中,特别是微观经济学中是指消费者所面对的这样的问题,即“我应怎样花费我的钱以最大化我的效用?”哲学家边沁(Jeremy Bentham,1748-1832)提
  • 原节子原节子(1920年6月17日-2015年9月5日),本名会田昌江,生于日本神奈川县横滨市,女演员。有映画“四大女优”之誉(另三位是田中绢代、高峰秀子和山田五十铃)。原节子幼年时的志愿是成为
  • 伊老师与小蟾蜍大历险《伊老师与小蟾蜍大历险》(英语:)是迪士尼第11部经典动画长片。于1949年10月5日上映。