+-*
/ /
/ 5 /
2 = 2
% //
5 % 2 = 1
注:左移操作符 <<1.除%操作符之外,其他的幾個操作符均可作用與整數和浮點數,但需要注意結果列印的格式和精度缺失。
2.對於/操作符,如果兩個數都為整數,執行整數除法,而只要有浮點數執行的就是浮點數除法。
3.%操作符的兩個運算元必須為整數。返回的是整除之後的餘數。
移位規則:左邊拋棄、右邊補零
int num = 10; //00000000000000000000000000001010 num在記憶體中的二進位制
num = num >> 1; //00000000000000000000000000010100 num左移一位的結果
右移操作符 >>
1.算數移位(常用)
移位規則:左邊用原該值的符號位填充、右邊丟棄
2.邏輯移位
移位規則:左邊用0補充、右邊丟棄
int num = -1; //11111111111111111111111111111111 記憶體中-1的補碼
//算數右移 11111111111111111111111111111111 左邊用原該值的符號位填充
//邏輯右移 01111111111111111111111111111111 左邊用0補充
& //按位與 兩數補碼同位比較,同為1為,其餘為0
| //按位或 兩數補碼同位比較,有1就取1,都為0才取0
^ //按位異或 兩數補碼同位比較,相同取0,不同取1
注:運算元必須是整數
#include
int main()
例:求乙個整數儲存在記憶體中的二進位制中1的個數
#include
int main()
printf("二進位制中1的個數 = %d\n", count);
return0;
}
復合賦值符+=
-=*=
/=%=
>>=
<<=
&=|=
a += 1,即a = a + 1
! //邏輯反操作 對非0的數反為0,對0取反為1
- //負值
+ //正值
& //取位址
sizeof
//運算元的型別長度(以位元組為單位)
~ //對乙個數的二進位制按位取反
-- //前置、後置--
++ //前置、後置++
* //間接訪問操作符(解引用操作符)
(型別) //強制型別轉換
sizeof和陣列#include
void test1(int arr)
void test2(char ch)
int main()
;char ch[10] = ;
printf("%d\n", sizeof(arr)); //40
printf("%d\n", sizeof(ch)); //10
test1(arr);
test2(ch);
return
0; }
++和- -運算子
前置++、- -
int a = 10;
int x = ++a; //x = 11 先對a進行自增,然後使用a
int y = --a; //y = 10 先對a進行自減,然後使用a
後置++、- -int a = 10;
int x = a++; //x = 10 a = 11 先使用a,然後對a進行自增
int y = a--; //y = 11 a = 10 先使用a,然後對a進行自減
解引用操作符int a = 10;
int p = &a; //定義指標p
p = 20; //解引用操作
>
>=
<
<=
!=//用於測試「不相等」
== //用於測試「相等」
注:在程式設計的過程中==和=寫錯,導致錯誤
&& //邏輯與
|| //邏輯或
注:邏輯與中,一旦出現0,則為0,後面的不再計算邏輯與和按位與、邏輯或和按位或
1&2--
----> 0
1&&2--
---> 1
1|2---
--->3
1||2--
--->1
exp1 ? exp2 : exp3
a > 5 ? b = 3 : b = -3
exp1, exp2, exp3, ...expn
逗號表示式,從左向右依次執行。整個表示式的結果是最後乙個表示式的結果
int a = 1
; int b = 2
; int c = (a > b, a = a+10, a, b = a + 1); //逗號表示式
1.[ ]
運算元:乙個陣列名 + 乙個索引值
int arr[10]; //建立陣列
arr[9] = 10; //使用下標引用操作符
//的兩個運算元是arr和9
2.( )
函式呼叫操作符
接受乙個或者多個運算元:第乙個運算元是函式名,剩餘的運算元就是傳遞給函式的引數
#include
void test1()
void test2(const
char *str)
int main()
3.訪問乙個結構成員
.結構體.成員名
->結構體指標->成員名
struct stu
int main()
隱式型別轉換
c的整型算數計算總是至少以預設整型的精度來進行的。為了獲得這個精度,表示式中的字元和短整型運算元在使用之前被轉換為普通型別,這種轉換被稱為「整型提公升」。
算術轉換
尋常算術轉換
long double
double
float
uunsiged long int
long int
unsigned int
int
如果某個運算元的型別在上面的列表中排名較低,那麼首先要轉換為另乙個運算元的型別後執行運算。
float f = 3.14;
int num = f; //隱式轉換,會有精度丟失
C語言 操作符和表示式
算術操作符 c提供了所有常用的算術操作符 除了 操作符,其餘的操作符是既適用於浮點型別又適用於整數型別 為取模操作符,接受兩個整型運算元,把左運算元除以右運算元,但其返回的值是餘數而不是商。移位操作符 二進位制 0和1 移位操作只是簡單地把乙個值的位向左或向右移動。左移位中,值最左邊的幾位被丟棄,右...
C語言 操作符和表示式
加法操作符 減法操作符 乘法操作符 除法操作符 取餘操作符 注意 右移操作符 左移操作符 注意 原值 0000 1011 11 1 0000 0101 5 11 2 1 2 0000 0010 2 11 2 2原值 0000 1011 11 1 0001 0110 22 11 2 1 2 0010 ...
C語言 操作符和表示式總結
操作符的分類 算術操作符 移位操作符 位操作符 賦值操作符 單目操作符 關係操作符 邏輯操作符 條件操作符 逗號表示式 下標引用 函式呼叫和結構成員 1.除了 操作符,其他的操作符都可以作用於整數和浮點數。2.對於 操作符,如果兩個運算元都是整數,執行整數除法,如果有浮點數執行的就是浮點數除法。3....