C和C++运算符

✍ dations ◷ 2025-10-16 14:57: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  }

安全问题

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

相关

  • 无定形碳无定形碳(Amorphous carbon)一种非结晶质(英语:Crystalline))构造、富含反应性的碳。所谓无定形碳是指其内部结构而言。部分无定形碳的末端可能与氢以悬键(英语:Dangling bond)结合,
  • 牻牛儿苗科牻牛儿苗科(学名:Geraniaceae)共有7-11属约800余种,分布在世界各地的温带和亚热带地区,也有少数种生长在热带,中国有4属70余种。比较重要的属是老鹳草属(430余种)、天竺葵属(280余种)
  • 内环境内环境 (法语:milieu intérieur,英语:interior milieu)是来源于法语的词汇。最早被克洛德·贝尔纳提出用来描述保护生物多细胞组织、器官功能及生理稳定的细胞外液环境。贝尔纳
  • 路易斯·莱特里尔路易斯·莱特里尔(英语:Louis Leterrier,1973年6月17日-)是一名法国男导演和制片人。赖托瑞的首部执导电影《非常人贩》于2002年上映,他与元奎共同担任导演:该片由吕克·贝松监制和
  • 光秒光秒是一个借用了光速恒定不变的概念,再加上秒的定义而成的大尺度距离单位,被定义为光在真空中一秒所行走的距离,是国际通用度量衡单位之一,常见于天文学和电讯上。根据现时国际
  • ABC记谱法ABC记谱法是19世纪出现的一种记谱法,以A到G的字母记录音高,再配以其他符号用来记录变化音、音长等,由克里斯·瓦尔莎发明。后来由于计算机使用ASCII字符集又要处理音乐,ABC记谱
  • 南希·罗曼南希·格蕾丝·罗曼(英语:Nancy Grace Roman,1925年5月16日-2018年12月25日),美国天文学家。由于她在规划哈勃太空望远镜方面的作用,她被许多人称为“哈勃之母”。她同时也是一位积
  • 冕 (恒星大气层)冕是太阳或其他天体由等离子体构成的大气层,延伸至太空中数百万公里,在日全食的时候很容易看见,但使用日冕仪随时都可以看见。在拉丁文中字根corona的意义就是光环。高温的日冕
  • 北果园乡北果园乡,是中华人民共和国河北省保定市阜平县下辖的一个乡镇级行政单位。北果园乡下辖以下地区:东下庄村、崔家庄村、北果元村、槐树底村、吴家沟村、抬头湾村、店坊村、广安
  • 查尔斯·巴赫曼查尔斯·威廉·巴赫曼(Charles William Bachman,1924年11月11日-2017年7月13日),是美国计算机科学家,因其在数据库领域的工作而闻名。他的主要贡献在工业界开发实际的产品,而非学术