天天看點

C語言運算符一、C語言的運算符二、算術運算符三、指派運算符四、sizeof運算符五、運算符的優先級

文章目錄

  • 一、C語言的運算符
  • 二、算術運算符
  • 三、指派運算符
  • 四、sizeof運算符
  • 五、運算符的優先級

一、C語言的運算符

C語言有六種運算符,如下:

1)算術運算符;

2)指派運算符;

3)sizeof運算符;

4)關系運算符;

5)邏輯運算符;

6)位運算符。

本章将隻介紹算術運算符、指派運算符和sizeof運算符,關系運算符和邏輯運算符放在其它章節中介紹,位運算符極少使用,了解即可,不深入學習。

二、算術運算符

下表顯示了 C 語言支援的所有算術運算符。假設變量 A 的值為 18,變量 B 的值為5,則:

運算符 描述 執行個體
+ 兩個數相加 A+B 将得到 23
- 一個數減另一個數 A-B 将得到 13
* 兩個數相乘 A*B 将得到 90
/ 分子除以分母 A/B 将得到 3.6
% 餘數運算符,整除後的餘數 B%A 将得到 3
++ 自增運算符,整數值增加 1 A++ 将得到 19
自減運算符,整數值減少 1 A-- 将得到 17

示例(book15.c)

/*
 *  程式名:book15.c,此程式示範算術運算符的使用。
 *  作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>

int main()
{
  double    A=18;      // 定義變量A,指派18
  double    B=5;       // 定義變量B,指派5

  printf("A的值是:%lf\n",A);
  printf("B的值是:%lf\n",B);

  printf("A+B的值是:%lf\n",A+B);
  printf("A-B的值是:%lf\n",A-B);
  printf("A*B的值是:%lf\n",A*B);
  printf("A/B的值是:%lf\n",A/B);

  //printf("A除B的餘數是:%lf\n",A%B);

  A++;  // 自增1
  printf("A自增後的值是:%lf\n",A);

  B--;  // 自減1
  printf("B自減後的值是:%lf\n",B);

  return 0;
}
           

運作效果

C語言運算符一、C語言的運算符二、算術運算符三、指派運算符四、sizeof運算符五、運算符的優先級

變量的自增或自減有兩種寫法:

看變量名在自增符号的前面還是後面

在前面就是先使用自身的值,再自增

在後面就是先自增,再使用

變量名++; // 表示在本次使用變量後再自增;

++變量名; // 表示在本次使用變量前自增;

變量名–; // 表示在本次使用變量後再自增;

–變量名; // 表示在本次使用變量前自減;

示例(book16.c)

/*
 *  程式名:book16.c,此程式示範算術運算符++和--的使用。
 *  作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>

int main()
{
  int    ii=0;      // 定義變量ii并初始化

  ii=10;
  printf("ii++的值是:%d\n",ii++);  // 在使用後自增
  printf("ii的值是:%d\n",ii);

  ii=10;
  printf("++ii的值是:%d\n",++ii);  // 在使用前自增
  printf("ii的值是:%d\n",ii);

  return 0;
} 
           

運作效果

C語言運算符一、C語言的運算符二、算術運算符三、指派運算符四、sizeof運算符五、運算符的優先級

三、指派運算符

下表列出了 C 語言支援的指派運算符:

運算符 描述 執行個體
= 簡單的指派運算符,把右邊操作數的值賦給左邊操作數 C = A + B 将把 A + B 的值賦給 C
+= 加且指派運算符,把右邊操作數加上左邊操作數的結果指派給左邊操作數 C += A 相當于 C = C + A
-= 減且指派運算符,把左邊操作數減去右邊操作數的結果指派給左邊操作數 C -= A 相當于 C = C - A
*= 乘且指派運算符,把右邊操作數乘以左邊操作數的結果指派給左邊操作數 C *= A 相當于 C = C * A
/= 除且指派運算符,把左邊操作數除以右邊操作數的結果指派給左邊操作數 C /= A 相當于 C = C / A
%= 求餘數且指派運算符,求兩個操作數的模指派給左邊操作數,浮點數不适用取餘數。 C %= A 相當于 C = C % A

指派運算符支援的是C語言的基本資料類型,包括char、int和double,字元串(字元數組)不能使用指派運算符。

示例(book17.c)

/*
 *  程式名:book17.c,此程式示範指派運算符的使用。
 *  作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>

int main()
{
  int    C=0;     // 定義變量C并初始化
  int    A=21;    // 定義變量A并初始化

  C=A;
  printf("運算符  = 示範,C的值 = %d\n",C);

  C+=A;  // C=C+A;
  printf("運算符 += 示範,C的值 = %d\n",C);

  C-=A;  // C=C-A;
  printf("運算符 -= 示範,C的值 = %d\n",C);

  C*=A;  // C=C*A;
  printf("運算符 *= 示範,C的值 = %d\n",C);

  C/=A;  // C=C/A;
  printf("運算符 /= 示範,C的值 = %d\n",C);

  C=200;
  C%=A;  // C=C%A;
  printf("運算符 %= 示範,C的值 = %d\n",C);

  return 0;
}
           

運作效果

C語言運算符一、C語言的運算符二、算術運算符三、指派運算符四、sizeof運算符五、運算符的優先級

四、sizeof運算符

sizeof是C語言的關鍵字,它用來計算變量(或資料類型)在目前系統中占用記憶體的位元組數。

sizeof不是函數,産生這樣的疑問是因為sizeof的書寫确實有點像函數,sizeof有兩種寫法:

用于資料類型

資料類型必須用括号包覆。

printf("字元型變量占用的記憶體是=%d\n",sizeof(char));   // 輸出:字元型變量占用的記憶體是=1
printf("整型變量占用的記憶體是=%d\n",sizeof(int));   // 輸出:整型變量占用的記憶體是=4
           

用于變量

sizeof(變量名);
sizeof 變量名;
           

變量名可以不用括号包覆,帶括号的用法更普遍,大多數程式員采用這種形式。

int ii;
printf("ii占用的記憶體是=%d\n",sizeof(ii));   // 輸出:ii占用的記憶體是=4
printf("ii占用的記憶體是=%d\n",sizeof ii);   // 輸出:ii占用的記憶體是=4
           

五、運算符的優先級

在±*/四則運算符中,*/的優先級高于±,在C語言中,其它的運算符都有優先級,我不想介紹它們的優先級,我寫了二十年的程式,也記不住各種運算符的優先級的關系。

我不建議程式員記住各種運算符的優先級,而是用括号解決全部的問題,括号的優先級是最高的,括号中的表達式會優先執行,這樣各個運算符的執行順序就一目了然了。

繼續閱讀