C和C++运算符

✍ dations ◷ 2025-10-20 11:02:59 #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  }

安全问题

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

相关

  • 父权规范异性恋霸权是一种以异性恋为中心的观念,这种观念将异性恋视为自然倾向,并将异性结合视为理所当然的义务,因此,所有非异性恋的都被认为是异常的或是负面的。这种观念的常见例子包
  • 阴茎鞘阴茎鞘是新畿内亚岛上部分部落,如耶里人的男性套在阳具上的传统器具。南美洲亚马逊地区的部分部落男性也会使用 。除阴茎鞘外,当地男性并不会穿着任何衣物。阴茎鞘以干葫芦制
  • 露头露头(英语:outcrop)是地球表面突出可见的岩床(英语:bedrock)或表面沉积物(英语:superficial deposits)。
  • 白薇白薇可能指的是:
  • 杨石先杨石先(1897年1月8日-1985年2月19日),原名绍曾,又名允柱,原籍安徽怀宁,生于浙江杭州,蒙古族,中国化学家和教育家,在应用化学研究和南开大学的建设方面卓有成就,是南开大学的第三任校长
  • 吉尔伯特和埃利斯群岛吉尔伯特和埃利斯群岛(英语:Gilbert and Ellice Islands)自1892年起是英国的保护国,1916年起成为殖民地,直至1976年1月1日群岛分割为两个殖民地后不久独立为止。1974年12月举行了
  • 兜率天兜.mw-parser-output ruby>rt,.mw-parser-output ruby>rtc{font-feature-settings:"ruby"1}.mw-parser-output ruby.large{font-size:250%}.mw-parser-output ruby.larger{f
  • 国际生物多样性计划国际生物多样性科学计划(Diversitas, 拉丁语中指“多样性”)是一项旨在整合生物多样性科学,以造福人类的国际研究项目。2014年12月,它与“未来地球”计划整合。未来地球计划由
  • 金黄红菇 Pers. (1796) (Pers.) Pers. (1801) Fr. (1838)蕈伞凸面子实层自由下垂孢印白色金黄红菇(学名:),俗称镀金脆褶(gilded brittlegill),是一种担子菌门真菌,隶属于俗称脆褶()的红菇属
  • 刘民生刘民生(1888年-1978年),山东沂水人,中华人民共和国政治人物。担任山东省政府副主席。1954年,当选第一届全国人民代表大会代表。