在c語言中,運算對象必須是整型數的運算符是:
①求余運算符%
②位運算符~、&、|、^、<<、>>。
具體原因是:
①求余運算必需是整型是因為求余是在整數除法中的運算。
②位運算必需是整型是因為位運算是操作整數中的位。
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
運算符
(1)算術運算符(+,-,*,/,%,++,--)。
(2)關系運算符(<,>,<=,>=,==,![KG-*8]=)。
(3)邏輯運算符(!,&&,||)。
(4)位運算符(<<,>>,~,|,^,&)。
(5)賦值運算符(=,及其雙目運算符的擴展賦值運算符)。
(6)條件運算符(?:)。
(7)逗號運算符(,)。
(8)指針運算符(*,&)。
(9)求字節數運算符(sizeof)。
(10)強制類型轉換運算符((類型))。
(11)分量運算符(·,->)。
(12)下標運算符([])。
(13)圓括號運算符(())。
算術運算符和賦值運算符
說明:
(1)+,-,*,/與數學中運算類似,先乘除后加減,也就是按優先級順序進行運算,優先級小的先運算。要改變運算順序只要加括號就可以了,括號全部為圓括號,必須注意括號的配對,它們適用于C的幾乎全部數據類型(指針類除外)的各種運算(++,--除外)。除法運算符(/)在用于兩個整型數據運算時,其運算結果也是整數,余數總是被截掉。如1/2的結果是0;10/3的結果是3。
(2)求余運算符(%)僅用于整型數據,不能用于實型和雙精度實型。它的作用是取整數除法的余數。如1%2的結果是1;10%3的結果也是1。
(3)賦值運算符(=)是將右邊表達式的值賦給左邊的變量。賦值運算符左邊必須是變量等有存貯單元的元素,而不能是常量或表達式。如x=x+1是合法的,即把x的值加上1后再賦給x,而x+1=x卻是非法的,因為x+1不是一個存貯單元,不能被賦以值。賦值號有別于數學中的等號,這一點是要注意的。
(4)++,--僅用于整型變量,指針變量。用于整型變量在原值上加1或減1;用于指針變量是取下一地址或上一地址。關于指針部分的使用在第八章中介紹。增1和減1運算符用在表達式中時,寫法是有差別的:如果運算符在操作數前面,則在表達式“引用”該操作數前,先對其作加1或減1運算;如果運算符在操作數之后,則先“引用”該操作數,然后再對它作加1或減1運算。考慮以下程序:
main()
{intx,y;
x=10;
y=++x;
printf(″%d,%d\n″,x,y);
}
運算結果為
11,11
此時y的值和x的值都為11。然而換一種寫法:
main()
{intx,y;
x=10;
y=x++;
printf(″%d,%d\n″,x,y);
}
運行結果為
11,10
此時y的值是10,而x的值自增后為11。上述兩種情況x都變成了11,而y的值卻不同。它們的差別只在于給x加1的時機不同。此時賦值即為引用。再如進行輸出操作時,有以下程序段:
x=10;
printf(″x=%d\n″,++x);
運行結果為x=11,執行其下一條語句時x也是11,而程序段:
x=10;
printf(″x=%d\n″,x++);
(5)+,-,*,/,%可以與賦值號=組成復合賦值運算符+=,-=,*=,/=,%=。
如a=a+b可以寫成a+=b,a=a*b可以寫成a*=b。其余類推。這樣書寫簡練,運行速度快,也提高了編譯效率。