程式中相當一部分資料處理和「
語句」是通過「
表示式」表達的,其中使用各種「
運算子」。◆ 在c++中對常量或變數進行運算或處理的符號稱為「
運算子」;參與運算的數稱為「
運算元」。
◆ 運算子的「
優先順序」指不同運算子在運算中的優先關係,可用序號表示,序號越小,優先順序越高。比如:
加號「+」和減號「-」的優先順序是6;乘號「*」和除號「/」的優先順序是5.「*」和「/」的優先順序高於「+」和「-」符合數**算的規律。
◆ 運算子的「
結合性」決定同優先順序的運算子對運算元的運算次序。從左到右運算稱為「右結合」,反之,從右到左稱為「左結合」。
比如,+、-的結合性是從左到右(右結合),則a+b+c-d的運算次序為:
((a+b)+c)-d
//先算a+b,再加c,最後減d
又如,前置++和單目負-的結合性是從右到左(左結合),則-++a的運算次序為:
-(++a)
//先做++a,再取相反數(加負號)
同一優先順序的運算子有相同的結合性。
按照要求的運算元個數,運算子分為單目(一元)運算子、雙目(二元)運算子和三目(三元)運算子:
運算子與運算元是相關聯的,相同的運算子對不同型別的運算元所執行的運算是有差異的。「表示式」就是由運算子、運算元及標點符號組成的,能取得乙個值的式子。本小節介紹的基本運算包括
算術運算
、關係運算
、邏輯運算
、位運算
等。◆
1、算術運算子及其表示式
注意:◆
2、賦值運算子與賦值表示式
注意:賦值號不是等號,它具有方向性。「左值」必須放在記憶體中可以訪問且可以合法修改值的儲存單元,通常只能是變數名;「右值」則可以是常量,也可以是變數或表示式,但一定能取得確定的值。
例如:下面的賦值運算是錯誤的:
3.1415926=pi; //左值不能是常數
x+y=z; //左值不能是表示式
設:const int n=30;
則:n=40; //左值不能是常變數
◆ 3、自增、自減運算 ◆
4、邏輯運算、邏輯表示式和邏輯表示式的求值優化
邏輯值:在c++中,邏輯值與整數有乙個對應關係:true對應1,false對應0。反過來,0對應false,非0整數對應true。所以,邏輯運算的結果可作為整數參與其他運算;整型數也可參與邏輯運算。
關係表示式:由關係運算子連線而成的表示式,結果為邏輯值。
邏輯表示式:由邏輯運算子連線的表示式,結果為邏輯值。關係表示式是一種最簡單的邏輯表示式。計算時,邏輯非優先順序最高,關係運算其次,邏輯與和邏輯或最低。
邏輯表示式的求值優化:在邏輯表示式的求值過程中,並非先將所有邏輯運算都做完再得結果,而是一旦表示式的值能夠確定,就不再進行後面的運算。(演示)
下面是幾個例項:
例1:假定a=3, b=0,c=5,d=2,x=6,y=2; 試分析下面的關係表示式::
a>b>c //先求a>b,結果為true,即1,再將結果1與c比較,結果為假
a+b>c+d //等同於(a+b)>(c+d),結果為假
a>b&&ay)-!a
//相當於((a>b)&&(ay)-(!a)),結果為true
例2:假定a=2, b=0, c=3; 則邏輯表示式 a||b++||c-- 產生的結果是:
【分析】:a=2,第乙個運算元為1;1與任何值相或的結果總是1(true);所以不用再計算b++和c--,則此b的值仍為0,c的值仍為3;整個表示式的值為1。
例3:假定x=0, y=2, z=3; 求表示式 x&&(y=y*y)&&(z=z+3)的結果?【解答】
◆ 5、位運算
◆ 6、逗號運算子與逗號表示式
例如:假定a=1,b=2,c=3; 以下逗號表示式的結果是:
c=b=(a=3,4*3) //結果為:a=3,b=12,c=12,表示式的值為12
c=b=a=3,4*3 //結果為:a=3,b=3,c=3,表示式的值為12
c=(b=a=3,4*3) //結果為:a=3,b=3,c=12,表示式的值為12
◆ 7、sizeof( )運算子
sizeof運算子:用於計算儲存一種資料型別或乙個變數所需的位元組數。一般格式為:
sizeof (《資料型別》) 或 sizeof(《變數名》)
關於sizeof()的幾點說明:
sizeof()應用舉例:
sizeof(int); //值為4
sizeof( float); //值為4
設:double x;
則:sizeof(x); //值為8
1 6 運算子與表示式
你所編寫的大多數語句 邏輯行 都包含了表示式 expressions 乙個表示式的簡單例子 便是2 3。表示式可以拆分成運算子 operators 與運算元 operands 接下來我們將簡要了解各類運算子及它們的用法。要記得你可以隨時在直譯器中對給出的案例裡的表示式進行求值。例如要想測試表示式 2...
運算子和表示式
運算子 1.算術運算子 定義 int i 2 1 i i 是在 使用完畢之後 2 i i 是在 之後使用 3 i i 是 3 3 是形成運算子的 4 函式是從右邊開始傳參,其中,為結束標誌 例子1 func i i i i,i 6,5,4,i,2 i最後是 7 6 5 4 7 2 例子2 i i i...
運算子和表示式
有些運算子需要兩個運算元,使用形式為 運算元 運算子 運算元,這樣的運算子就叫做二元運算子或雙目運算子,只需要乙個運算元的運算子叫做一元運算子或單目運算子。運算子具有優先順序和結合性。如果乙個表示式中有多個運算子則先進行優先順序高的運算,後進行優先順序低的運算。結合性就是指當乙個運算元左邊和右邊的運...