C語言操作符和表示式

2021-08-17 21:01:55 字數 3874 閱讀 1587

+-*

/ /

/ 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....