C和C++運算子- 維基百科,自由的百科全書
文章推薦指數: 80 %
運算子優先級[編輯]. 以下是C++程式語言中的所有運算子的優先級和結合性列表。
... not_eq, 不等於關係 ... 符號, 安全性, 符號, 安全性, 符號, 安全性, 符號, 安全性.
C和C++運算子
維基百科,自由的百科全書
跳至導覽
跳至搜尋
所有的C語言運算子都被C++語言支援。
C語言不支援運算子多載。
在不多載時,運算子&&、||、,(逗號運算子),在第一個運算元求值之後有一個順序點。
大部分C與C++運算子也可用於其它程式設計語言如C#、Java、Perl、PHP等,具有相同的優先級、結合性與語意。
目次
1運算子優先級
2列表
2.1算術運算子
2.2比較運算子
2.3位元運算子
2.4其它運算子
2.5語言擴展
3註解
4安全問題
5參閱
6參考資料
7外部連結
運算子優先級[編輯]
以下是C++程式語言中的所有運算子的優先級和結合性列表。
優先級
運算子
敘述
範例
多載性
結合性
1
::
作用域解析(C++專有)
Class::age=2;
否
由左至右
2
++
字尾遞增
i++
--
字尾遞減
i--
()
函式呼叫或函式呼叫形式的類型轉換
intx=f();
[]
陣列存取
array[4]=2;
.
以物件方式存取成員
obj.age=34;
否
->
以指標方式存取成員
ptr->age=34;
dynamic_cast
執行時檢查類型轉換(C++專有)
Y&y=dynamic_cast
算術運算子[編輯]
運算子名稱
語法
可重載
C語言裡有
一元正號
+a
是
是
加法(總和)
a+b
是
是
前綴遞增
++a
是
是
後綴遞增
a++
是
是
以加法賦值
a+=b
是
是
一元負號(取反)
-a
是
是
減法(差)
a-b
是
是
前綴遞減
--a
是
是
後綴遞減
a--
是
是
以減法賦值
a-=b
是
是
乘法(乘積)
a*b
是
是
以乘法賦值
a*=b
是
是
除法(分之)
a/b
是
是
以除法賦值
a/=b
是
是
模數(餘數)
a%b
是
是
以模數賦值
a%=b
是
是
比較運算子[編輯]
運算子名稱
語法
可重載
C語言裡有
小於
ab
是
是
大於或等於
a>=b
是
是
不等於
a!=b
是
是
等於
a==b
是
是
邏輯取反
!a
是
是
邏輯AND
a&&b
是
是
邏輯OR
a||b
是
是
三路比較
a<=>b
是
否
位元運算子[編輯]
運算子名稱
語法
可重載
C語言裡有
位元左移
a<>b
是
是
以位元右移賦值
a>>=b
是
是
位元一的補數
~a
是
是
位元AND
a&b
是
是
以位元AND賦值
a&=b
是
是
位元OR
a|b
是
是
以位元OR賦值
a|=b
是
是
位元XOR
a^b
是
是
以位元XOR賦值
a^=b
是
是
其它運算子[編輯]
運算子名稱
語法
可重載
C語言裡有
基本賦值
a=b
是
是
函式呼叫
a()
是
是
陣列下標
a[b]
是
是
間接(向下參考)
*a
是
是
的位址(參考)
&a
是
是
成員指標
a->b
是
是
成員
a.b
否
是
間接成員指標
a->*b
是
否
間接成員
a.*b
否
否
轉換
(type)a
是
是
逗號
a,b
是
是
三元條件
a?b:c
否
是
作用域解析
a::b
否
否
的大小
sizeofa
否
是
類型識別
typeidtype
否
否
分配儲存區
newtype
是
否
解除分配儲存區
deletea
是
否
語言擴展[編輯]
運算子名稱
語法
可重載
C語言裡有
提供者
標籤值
&&label
否
是
GCC
取得型態
typeofatypeof(expr)
否
是
GCC
最小/最大值
a?b
否
否
GCC<4.3
註解[編輯]
在C和C++中對運算子的約束,是語言的語法規範因素所指定的(在對應的標準中),而不是優先級列表。
這造成了一些微妙的衝突。
例如,在C中,條件表達式的語法是:
邏輯-OR-表達式 ?表達式 :條件-表達式
在C++中則是:
邏輯-or-表達式 ?表達式 :賦值-表達式
因此,這個表達式:
e=a ?b :c=d
兩個語言的語法分析結果並不相同。
在C中,這個表達式被解析為:
e=((a ?b :c)=d)
這是一個錯誤的語義,因為條件-表達式的結果並不是一個左值。
在C++中,則解析為:
e=(a ?b :(c=d))
這是一個有效的表達式。
位元邏輯運算子的優先級一直受到批評[1]。
在觀念裡,&和|是類似於+和*的數值運算子。
但是,表達式
a&b==7
意謂
a&(b==7)
而
a+b==7
意謂
(a+b)==7
這就需要經常使用圓括號,以免有意料之外的結果。
一元正號運算子可用於運算元表達式的類型提升。
例如下例:
template
延伸文章資訊
- 1等號比較運算子:== 和!= | Microsoft Docs
- 2關係運算| C++與演算法
等於, 1+1 == 2, 1 != 不等於, 3 != 4, 1. > 大於, 5 > 7, 0. >= 大於等於, 3 >= 5, 0. <, 小於, 2 < 6, 1. <= 小於等於, ...
- 3C++里面的"不等于"是怎么表示 - 百度知道
C++兼容C语言的大部分语法,所以不等号也是半角的!=,请检查是否使用了全角符号。 如果不小心输入了全角字符,会被认为是非法字符。
- 4C語言中不等於使用什麼符號? - 極客派
c語言中的“不等於”屬於優先順序第9級中的不等運算子。c語言中等等指的是等於運算子“==”,不等指的是不等於運算子“!=”。
- 5Day10-PHP運算子、運算式(2) - iT 邦幫忙
符號, 意義. == 等於. === 全等 != 不等於. > 大於. <, 小於. >= 大於等於. <= 小於等於 ... 可以試著執行以下程式: <?php $a = 88 ; $b = ...