• 正文
    • 算術(shù)運(yùn)算符
    • 關(guān)系運(yùn)算符
    • 邏輯運(yùn)算符
    • 位運(yùn)算
    • 賦值運(yùn)算
    • 雜項(xiàng)運(yùn)算
    • 運(yùn)算符優(yōu)先級(jí)
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

C語(yǔ)言速查手冊(cè):運(yùn)算符(Operators)

2024/04/30
2028
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

運(yùn)算符是執(zhí)行特定操作的符號(hào),它主要用于表達(dá)式的構(gòu)成。在C語(yǔ)言中運(yùn)算符有很多種操作符,主要包括以下幾種運(yùn)算符:

  • 算術(shù)運(yùn)算符
  • 關(guān)系運(yùn)算符
  • 邏輯運(yùn)算符
  • 位運(yùn)算符
  • 賦值運(yùn)算符
  • 雜項(xiàng)運(yùn)算符

算術(shù)運(yùn)算符

算術(shù)運(yùn)算符主要是一些算術(shù)運(yùn)算,例如加減乘除等。詳細(xì)的運(yùn)算規(guī)則如下表:

示例:

#include <stdio.h>

int main()
{
int a = 1, b1 = 2;
float b2 = 2.0;

printf("a + b1 = %dn", a + b1);
printf("a - b1 = %dn", a - b1);
printf("a * b1 = %dn", a * b1);
printf("a / b1 = %dn", a / b1);
printf("a / b2 = %fn", a / b2);
printf("a %% b1 = %dn", a % b1);
printf("a++ = %d ; a = %dn", a++, a);
printf("++a = %d ; a = %dn", ++a, a);
printf("a-- = %d ; a = %dn", a--, a);
printf("--a = %d ; a = %dn", --a, a);

return 0;
}

輸出結(jié)果:

上述運(yùn)算中有幾點(diǎn)需要特別的注意。除法運(yùn)算中如果兩個(gè)操作數(shù)都是整數(shù)那么得到的結(jié)果也必然是整數(shù)而不是小數(shù),如果兩個(gè)操作數(shù)其中有一個(gè)數(shù)是小數(shù)那么其結(jié)果也是小數(shù);對(duì)于整除運(yùn)算結(jié)果也是整數(shù)。對(duì)于自增或自減運(yùn)算,運(yùn)算符在操作數(shù)之前和之后對(duì)于表達(dá)是本身來(lái)說(shuō)有著一定的區(qū)別,但對(duì)于操作數(shù)自身是一樣的;如果操作數(shù)在運(yùn)算符的左邊,則表達(dá)式的值就是操作數(shù)未運(yùn)算之前的值,反之,就是運(yùn)算之后的值。

關(guān)系運(yùn)算符

關(guān)系運(yùn)算符主要是操作數(shù)大小的判斷運(yùn)算,例如兩個(gè)操作數(shù)是否相等。詳細(xì)的運(yùn)算規(guī)則如下表:

示例:

#include <stdio.h>
int main()
{
int a1 = 1, b1 = 2;
int a2 = 1;

printf("a1 == a2 : %dn", a1 == a2);
printf("a1 == b1 : %dn", a1 == b1);
printf("a1 != b1 : %dn", a1 != b1);
printf("a1 > b1 : %dn", a1 > b1);
printf("a1 >= a2 : %dn", a1 >= a2);
printf("a1 < b1 : %dn", a1 < b1);
printf("a1 <= b1 : %dn", a1 <= b1);

return 0;
}

輸出結(jié)果:

上面的的輸出結(jié)果中,1為真,0為假。

邏輯運(yùn)算符

邏輯運(yùn)算也叫布爾運(yùn)算,主要是測(cè)試真假值。詳細(xì)的運(yùn)算規(guī)則如下表:

示例:

#include <stdio.h>
int main()
{
int a0 = 0, b0 = 0;
int a1 = 1, b1 = 1;

printf("a0 && b0 : %dn", a0 && b0);
printf("a0 && a1 : %dn", a0 && a1);
printf("a1 && b1 : %dn", a1 && b1);
printf("a0 || b1 : %dn", a0 || b1);
printf("!a0 : %dn", !a0);
printf("!a1 : %dn", !a1);
}

輸出結(jié)果:

位運(yùn)算

位運(yùn)算是直接對(duì)操作數(shù)存儲(chǔ)在內(nèi)存中的二進(jìn)制進(jìn)行按位操作。所以其速度也會(huì)比一般的運(yùn)算速度會(huì)快。詳細(xì)的運(yùn)算規(guī)則如下表:

示例:

#include <stdio.h>

int main()
{
int a = 5, b = 3;
printf("a & b = %dn", a & b);
printf("a | b = %dn", a | b);

return 0;
}

輸出結(jié)果:

賦值運(yùn)算

最簡(jiǎn)單的賦值運(yùn)算符就是”=“,它的優(yōu)先級(jí)很低,后面會(huì)介紹。詳細(xì)的運(yùn)算規(guī)則如下表:

示例:

#include <stdio.h>

int main()
{

int a = 1, b = 2, c = 3;
a += 1;
b -= 1;
c %= 2;

printf("a = %dn", a);
printf("b = %dn", b);
printf("c = %dn", c);

a <<= 2;
printf("a = %dn", a);
a >>= 1;
printf("a = %dn", a);
b >>= 1;
printf("b = %dn", b);

return 0;
}

輸出結(jié)果:

雜項(xiàng)運(yùn)算

除了上面幾種運(yùn)算符外,還有幾種比較常用的運(yùn)算符。詳細(xì)的運(yùn)算規(guī)則如下表:

sizeof()在數(shù)據(jù)類型章節(jié)已經(jīng)介紹過(guò),& 和 *在指針的篇幅會(huì)做詳細(xì)的介紹,這里不過(guò)多說(shuō)明。我們來(lái)看一個(gè)三目運(yùn)算(?:)的例子,下面示例中如果“?”符號(hào)前a>b的條件成立,則取“:”符號(hào)前a的值,否則,取后面c的值。

示例:

#include <stdio.h>

int main()
{

int a = 1, b = 2, c = 3;
printf("a > b ? a : c= %dn", a > b ? a : c);

return 0;
}

輸出結(jié)果:

運(yùn)算符優(yōu)先級(jí)

多個(gè)運(yùn)算符在表達(dá)中出現(xiàn)時(shí)有著一定的運(yùn)算順序,不同運(yùn)算符有優(yōu)先級(jí)的高低,下表列出了不同運(yùn)算符的優(yōu)先級(jí)順序,從上到下優(yōu)先級(jí)從高到低。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
AB26T-32.768KHZ 1 Abracon Corporation CRYSTAL 32.7680KHZ 12.5PF T/H

ECAD模型

下載ECAD模型
$0.33 查看
510BBA156M250BAGR 1 Silicon Laboratories Inc LVDS Output Clock Oscillator, 0.1MHz Min, 250MHz Max, 156.25MHz Nom,

ECAD模型

下載ECAD模型
$2.51 查看
MOC3063SR2M 1 Fairchild Semiconductor Corporation Triac Output Optocoupler With Zero CRSVR, 1-Element, 7500V Isolation, SURFACE MOUNT, DIP-6
$0.89 查看

相關(guān)推薦