C語言中有哪些不同的運算子和表示式?
運算子是C語言中用於對值和變數執行操作的特殊符號。這些特殊符號允許我們以不同的方式操作資料和變數。這些運算子可分為以下幾類:
- 算術運算子。
- 關係運算符。
- 邏輯運算子。
- 賦值運算子。
- 自增和自減運算子。
- 位運算子。
- 條件運算子。
- 特殊運算子。
C語言中的表示式是由變數、運算子和值組合而成的,產生單個結果。表示式可以分為以下兩種型別:
- 簡單表示式
- 複雜表示式
讓我們先了解一下表達式,然後再簡要介紹運算子。
C語言中的簡單表示式
簡單表示式是由一個或多個值(運算元)和符號(運算子)混合而成,產生一個結果。它不包含複雜的部分,例如函式或巢狀表示式。簡單表示式通常只包含一個數學或邏輯運算。
以下是C語言中簡單表示式的示例
#include <stdio.h>
int main(){
int a = 3; // Operand
int b = 6; // Operand
int sum = a + b; // Simple Expression adds up a and b
printf("The sum is: %d
", sum); // Print the result.
return 0;
}
C語言中的複雜表示式
複雜表示式是指包含多個運算子和運算元的表示式。因此,它可以包含算術、邏輯、關係、位運算等操作來獲得結果。它還可以包含括號來維持正確的運算順序。
以下是C語言中複雜表示式的示例。
#include <stdio.h>
int main() {
int a = 5; // Operand
int b = 10; // Operand
int c = 2; // Operand
int result; // Variable to store the result
// Complex expression: (a + b) * c - (b / a)
result = (a + b) * c - (b / a);
printf("The result of the complex expression is: %d
", result); // Print the result
return 0;
}
以下是C語言中運算子型別的詳細概述。
算術運算子
算術運算子用於數值計算(或)執行算術運算,例如加法、減法等。下表將幫助您更好地理解。
| 運算子 | 描述 | 示例 | a=20,b=10 | 輸出 |
|---|---|---|---|---|
| + | 加法 | a+b | 20+10 | 30 |
| - | 減法 | a-b | 20-10 | 10 |
| * | 乘法 | a*b | 20*10 | 200 |
| / | 除法 | a/b | 20/10 | 2(商) |
| % | 取模運算 | a%b | 20%10 | 0(餘數) |
以下是算術運算子的C程式示例:
#include<stdio.h>
void main (){
int a= 20, b = 10;
printf (" %d", a+b);
printf (" %d", a-b);
printf (" %d", a*b);
printf (" %d", a/b);
printf (" %d", a%b);
}
輸出
執行上述程式時,將產生以下結果:
30 10 200 20
關係運算符
關係運算符用於比較兩個表示式,例如大於、小於、等於、不等於。下表提供了更清晰的說明。
| 運算子 | 描述 | 示例 | a=20,b=10 | 輸出 |
|---|---|---|---|---|
| < | 小於 | a<b | 10<20 | 1 |
| <= | 小於等於 | a<=b | 10<=20 | 1 |
| > | 大於 | a>b | 10>20 | 0 |
| >= | 大於等於 | a>=b | 10>=20 | 0 |
| == | 等於 | a==b | 10==20 | 0 |
| != | 不等於 | a!=b | 10!=20 | 1 |
關係表示式的輸出結果要麼為真(1),要麼為假(0)。
以下是關係運算符的C程式示例:
#include<stdio.h>
void main (){
int a= 10, b = 20;
printf (" %d", a<b);
printf (" %d", a<=b);
printf (" %d", a>b);
printf (" %d", a>=b);
printf (" %d", a ==b);
printf (" %d", a !=b);
}
輸出
執行上述程式時,將產生以下結果:
1 1 0 0 0 1 1 1
邏輯運算子
邏輯運算子用於邏輯上組合2個或多個表示式。它們就像特殊的工具,可以幫助我們根據真或假答案在程式中做出決策。想象一下,你正在玩一個遊戲,你需要檢查是否滿足某些條件才能獲勝。例如,你可能需要知道你是否有足夠的積分以及是否收集了特殊的物品。邏輯運算子幫助我們一起測試這些情況,以便我們可以在程式中決定下一步做什麼。
邏輯運算子有三種類型。它們如下:
- 邏輯與(&&)
- 邏輯或(||)
- 邏輯非(!)
邏輯與(&&)
邏輯與運算子(&&)是程式設計中一項基本工具,它允許我們檢查兩個條件是否同時為真。假設你有兩個問題,你想知道兩個答案是否都是“是”。如果是,則結果為真。如果兩個答案中任何一個為“否”,則結果為假。
下表顯示了與運算子的工作原理。
| exp1 | exp2 | exp1&&exp2 |
|---|---|---|
| T | T | T |
| T | F | F |
| F | T | F |
| F | F | F |
邏輯或(||)
邏輯或運算子(||)在程式設計中非常有用。它允許我們檢查兩個條件中至少有一個是否為真。可以將其想象為提出兩個問題,並想知道其中任何一個問題是否得到“是”的答案。如果任一條件為真,則總體結果為真。如果兩者都為假,則結果為假。
下表提供了有關或(||)的更多詳細資訊。
| exp1 | exp2 | exp1||exp2 |
|---|---|---|
| T | T | T |
| T | F | T |
| F | T | T |
| F | F | F |
邏輯非(!)
邏輯非運算子(!)是程式設計中一個獨特的工具,它可以幫助我們翻轉特定條件的真值。可以將其想象為一個開關,將“是”變成“否”,或將“真”變成“假”。如果某件事為真,則使用邏輯非運算子將使其變為假,如果某件事為假,則它將變為真。
下表提供了有關非運算子的更多詳細資訊
| exp | !exp |
|---|---|
| T | F |
| F | T |
邏輯運算子總結及示例
| 運算子 | 描述 | 示例 | a=20,b=10 | 輸出 |
|---|---|---|---|---|
| && | 邏輯與 | (a>b)&&(a<c) | (10>20)&&(10<30) | 0 |
| || | 邏輯或 | (a>b)||(a<=c) | (10>20)||(10<30) | 1 |
| ! | 邏輯非 | !(a>b) | !(10>20) | 1 |
以下是邏輯運算子的C程式示例:
#include<stdio.h>
void main (){
int a= 10, b = 20, c= 30;
printf (" %d", (a>b) && (a<c));
printf (" %d", (a>b) || (a<c));
printf (" %d", ! (a>b));
}
輸出
執行上述程式時,將產生以下結果:
0 1 1
賦值運算子
賦值運算子是幫助我們為變數賦值的符號。當我們想要將值儲存在變數中時,就會使用它們。賦值運算子的型別包括:
- 簡單賦值。
- 複合賦值。
簡單賦值
簡單賦值運算子(=)用於為變數賦值。它獲取右側的值並將其放入左側的變數中。就像將數字或單詞放入特定的盒子中一樣。
複合賦值
複合賦值運算子一次執行兩件事。首先,它們執行數學運算,例如加法、減法、乘法或除法,然後將結果儲存回同一個變數中。
下表包含賦值運算子及其示例:
| 運算子 | 描述 | 示例 |
|---|---|---|
| = | 簡單賦值 | a=10 |
| +=,-=,*=,/=,%= | 複合賦值 | a+=10"a=a+10 a=10"a=a-10 |
以下是賦值運算子的C程式示例:
#include<stdio.h>
void main (){
int a= 10;
printf (" %d", a);
printf (" %d", a+=10);
}
輸出
執行上述程式時,將產生以下結果:
10 20
自增和自減運算子
讓我們瞭解一下什麼是自增運算子。
自增運算子(++)
此運算子將變數的值加1。
它包括兩種型別:
- 前置自增
- 後置自增
如果我們將自增運算子放在運算元之前,則稱為前置自增。稍後,先將值加1,然後對它執行下一個操作。
例如:
z = ++a; // a= a+1 z=a
如果我們將自增運算子放在運算元之後,則稱為後置自增,並且在執行操作後將值加1。
例如:
z = a++; // z=a a= a+1
示例
以下是自增運算子的C程式示例:
#include <stdio.h>
void main() {
int a= 10, z;
z= ++a;
printf("z=%d", z);
printf("
a=%d", a);
z= a++;
printf("
z=%d", z);
printf("
a=%d", a);
}
輸出
執行上述程式時,將產生以下結果:
z=11 a=11 z=11 a=12
自減運算子(--)
它用於將變數的值減1。
它包括兩種型別:
- 前置自減
- 後置自減
如果自減運算子放在運算元之前,則稱為前置自減。在此,先將值減1,然後對它執行操作。
例如:
z = - - a; // a= a-1 z=a
如果自減運算子放在運算元之後,則稱為後置自減。在此,在執行操作後將值減1。
例如:
z = a--; // z=a a= a-1
以下是自減運算子的C程式示例:
#include <stdio.h>
void main() {
int a=10, z;
z= --a;
printf("z=%d", z);
printf("
a=%d", a);
z= a--;
printf("
z=%d", z);
printf("
a=%d", a);
}
輸出
執行上述程式時,將產生以下結果:
z=9 a=9 z=9 a=8
位運算子
位運算子直接作用於數字的二進位制(位級)形式。在計算機中,數字以一系列0和1的形式儲存,稱為位。位運算子幫助我們直接操作這些位,這對於某些型別的程式設計任務非常有用。
位運算子的型別如下表所示
| 運算子 | 描述 |
|---|---|
| & | 按位與 |
| | | 按位或 |
| ^ | 按位異或 |
| << | 左移 |
| >> | 右移 |
| ~ | 按位取反 |
C語言中的按位與(&)
按位與(&)運算子從右側開始逐位比較兩個數字。如果兩個位都為1,則結果為1;如果兩個位中任何一個為0,則結果為0。
示例程式碼
5 & 3; // In binary: 101 & 011 = 001 (Result is 1)
輸出
1
| 按位與 | ||
|---|---|---|
| a | b | a&b |
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
按位或(|)
此運算子逐位比較數字。如果任何一個位為1,則結果為1;如果兩個位都為0,則結果為0。
示例程式碼
5 | 3; // In binary: 101 | 011 = 111 (Result is 7)
輸出
7
| 按位或 | ||
|---|---|---|
| a | b | a|b |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
按位異或(^)
此運算子逐位比較兩個數字。如果兩個位都為1或都為0,則結果為0;如果它們不同,則結果為1。
示例程式碼
5 ^ 3; // In binary: 101 ^ 011 = 110 (Result is 6)
輸出
6
| 按位異或 | ||
|---|---|---|
| a | b | a^b |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |

左移
如果值左移一次,則其值加倍。就像我們每次左移都將數字乘以2一樣。
例如,a = 10,則a<<1 = 20

右移
如果變數的值右移一次,則其值變為原始值的一半。這與左移相反,就像我們每次右移都將數字除以2一樣。
例如,a = 10,則a>>1 = 5

按位取反
它將所有1轉換為0,將所有0轉換為1。
例如,a = 5,則~a=2 [僅當考慮4位時]。

以下是另一個位運算子的C程式示例:
#include<stdio.h>
void main (){
int a= 20, b = 10,c=10;
printf (" %d", a<<1);
printf (" %d", b>>1);
printf (" %d", ~c);
}
輸出
執行上述程式時,將產生以下結果:
40 5 11
帶符號
按位取反 = - [給定數字 + 1]
例如,~10 = - [10+1] = -11
~-10 = - [-10+1] = 9
無符號
按位取反 = [65535 – 給定數字]
條件運算子(?:)
條件運算子,也稱為三元運算子,是在程式設計中做出決策的一種簡單易行的方法。它允許我們根據特定條件從兩個選項中選擇一個值。
三元運算子的語法如下:
exp1? exp2: exp3
如果exp1為真,則計算exp2。否則,計算exp3。或者以if-else的形式表示。
if (exp1) exp2; else exp3;
以下是條件運算子的C程式示例:
#include<stdio.h>
void main (){
int z;
z = (5>3) ? 1:0;
printf ("%d",z);
}
輸出
執行上述程式時,將產生以下結果:
特殊運算子
一些特殊運算子包括逗號、取地址符(&)、sizeof運算子。
- 逗號 ( , ) − 用於分隔變數。例如:a=10, b=20
- 地址 (&) − 獲取變數的地址。
- sizeof ( ) − 用於獲取變數資料型別的大小(以位元組為單位)。
以下是 C 語言特殊運算的程式示例:
#include <stdio.h>
int main() {
int a = 10;
float b = 20;
printf("a = %d, b = %.1f
", a, b);
printf("a address = %p
", (void*)&a);
printf("b address = %p
", (void*)&b);
printf("a size = %ld
", sizeof(a));
printf("b size = %ld
", sizeof(b));
return 0;
}
輸出
執行上述程式時,將產生以下結果:
a=10 b=20.00 Address of a =1 2 3 4 Address of b = 5 6 7 8 Only for this example Size of a = 4 bytes Size of b = 4 bytes
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP