運算符(operator)
- 算數運算符 7種
- 關系運算符 6種
- 邏輯運算符 3種
- 位運算符 6種
- 賦值運算符 11種
- 共5類33種
算術運算符
- 加 +
- 減 -
- 乘 *
- 除 /
- 取余 % (僅限於整數類型)
// numerator 被除數
// denominator 除數
// quotient 商
// remainder 余數
int n = 20, d=3;
int q = n / d;
int r = n % d;
printf("%d÷%d商為%d,余數%d",n,d,q,r);
應用:%2可以用於奇偶數的判斷:
int main(int argc, char** argv) {
for(int i = 0; i<100; i++) {
if(i%2 == 1) {
printf("%d是奇數\n", i);
} else {
printf("%d是偶數\n", i);
}
}
return 0;
}
自增運算符 ++
i++是先用i進行操作,再對i+1;
++i是先對i+1,再用i進行操作;
關系運算符
左值==右值:相等的時候,結果是整數1;不相等的時候,結果是整數0。
int a = 1;
printf("1 == a 結果:%d \n", 1 == a); // 相等
printf("2 == a 結果:%d \n", 2 == a); // 不相等
注意:C語言中,比較“某變量是否等於某值”時,不要使用a == 1的形式,建議使用1 == a的形式。
因為a == 1很容易寫成a = 1,這是一個賦值語句(無論a之前等於多少,都會變成1),賦值會成功,返回結果永遠是整數1,即會被誤判為相等,同時改變了a的值。
而如果1 == a如果寫成1=a,不符合語法,編譯器會報錯。這樣可以避免代碼出錯而自己還不知道。
邏輯運算符
運算符 | 中 | 英 | 說明 |
---|---|---|---|
&& | 與 | AND | 同真為真 |
|| | 或 | OR | 一榮俱榮 |
! | 非 | NOT |
短路邏輯運算
以&&為例:
兩個操作數都為true時,結果才為true;
第一個為false時,結果就必為false,這時不會再判斷第二個操作。
int a = 1;
if ( (a < 0) && (a++ < 1) )
{
// Do Nothing
}
結果a沒有自增,還是1
位運算符
- & 位與
- | 位或
- ^ 亦或
- ~ 補碼取反
- >> 右移
- << 左移
對於int a=3,擴大8倍最快的方法是a<<3,即左移3位,相當於乘以23,計算機做位移的操作要被乘除快得多,比加法都快。
擴大2倍 | a<<1 | 縮小2倍 | a>>1 |
---|---|---|---|
擴大4倍 | a<<2 | 縮小4倍 | a>>2 |
擴大8倍 | a<<3 | 縮小8倍 | a>>3 |
擴大16倍 | a<<4 | 縮小16倍 | a>>4 |
賦值運算符
- =
- +=、-=、*=、/=、%=
- &=、^=、|=、<<=、>>=