C和C++运算符

✍ dations ◷ 2025-12-11 11:55:13 #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  }

安全问题

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

相关

  • 活埋活埋,古称“生埋”,指将活人或活动物埋入土中,使其窒息死亡。活埋可以是人为造成,也可以是自然灾害或者意外导致的。中国古籍中常见“坑杀”一词,常被人们解释为“活埋”,《辞海》
  • 战备储油战备储油(英语:strategic petroleum reserve,缩写:SPR)指的是一个国家为预防因战争等因素而导致石油进口或生产中断,会以该国一日平均用油量规定需最少储备一定数量的石油(各国规定
  • 菊酸菊酸(chrysanthemic acid)是和各种天然或合成杀虫剂有关的有机化合物的一种。该物质与除虫菊酯、拟除虫菊酯有关,许多合成的拟除虫菊酯,都是菊酸酯。菊酸有2个手性碳原子,故有4种
  • 乌尔比翁峰坐标:42°0′30″N 2°51′52″W / 42.00833°N 2.86444°W / 42.00833; -2.86444乌尔比翁峰(西班牙语:Picos de Urbión),是西班牙的山峰,处于德曼达山脉以南,属于伊比利亚山脉的
  • 更新世北美洲美洲豹更新世北美洲美洲豹(学名:),又称为奥古斯塔美洲豹,为已灭绝的美洲豹亚种,是北美洲的特有种,生存于1千8百万年前至11,000年前的更新世。更新世北美洲美洲豹的化石发现于美国的华盛顿
  • 茂名市运动会茂名市运动会是广东省茂名市规格最高、规模最大的综合性体育盛会,由茂名市人民政府主办,一般于广东省运动会举办的前一年举行。其前身最早可追溯到民国18年(1929年)10月10日在茂
  • 威宁小檗威宁小檗(学名:)为小檗科小檗属下的一个种。
  • 中国铁路跨局非空调列车车次在中国的铁路客运中,跨局旅客列车多数已空调化,但仍然存在一些跨局非空调列车,其中以普通旅客快车和普通旅客列车为主。
  • 法兰克·德雷克法兰克·德雷克(Frank Donald Drake,1930年5月28日-)是一位美国天文学家与天体物理学家,以创立搜寻地外文明计划与发明德雷克方程式及阿雷西博信息而闻名于世。法兰克·德雷克出
  • 拼图配件拼图配件(英语:Jigsaw Puzzle Accessories)是一个术语, 使用于描述拼图爱好者从事他们的兴趣时所使用的设备.拼图商品化可以追溯到1760年代的英格兰,由约翰·史皮尔斯布里起始。