C語言 操作符詳解 練習

2021-10-22 17:22:25 字數 3991 閱讀 8818

void test1(int arr) 

void test2(char ch)

int main()

; char ch[10] = ;

printf("%d\n", sizeof(arr)); //(1) 40

printf("%d\n", sizeof(ch)); //(3) 10

test1(arr); //傳參是首元素位址,指標的大小4/8

test2(ch); //傳參是首元素位址,指標的大小4/8

return 0;

}

int i = 0, a = 0, b = 2, c = 3, d = 4;

i = a++ && ++b && d++; //a++ 是後置++,先使用再++。a=0 為假,後面不管是什麼都不算了,a++

printf(" a = %d\n b = %d\n c = %d\n d = %d\n", a, b, c, d); //1 2 3 4

int i = 0, a = 1, b = 2, c = 3, d = 4;

i = a++ && ++b && d++;//a=1為真,a++,++b是前置++,先加在使用,b=3為真,d=4為真,d++

printf(" a = %d\n b = %d\n c = %d\n d = %d\n", a, b, c, d); //2 3 3 5

int i = 0, a = 0, b = 2, c = 3, d = 4;

i = a++ || ++b || d++; //a=0為假,a++,b++,b=3為真,結束

printf(" a = %d\n b = %d\n c = %d\n d = %d\n", a, b, c, d); //1 3 3 4

int i = 0, a = 1, b = 2, c = 3, d = 4;

i = a++ || ++b || d++; //a=1為真,結束。a++

printf(" a = %d\n b = %d\n c = %d\n d = %d\n", a, b, c, d); //2 2 3 4

//a,b要進行整形提公升,但是c不需要整形提公升 a,b整形提公升之後,變成了負數

//c不發生整形提公升,則表示式 c==0xb6000000 的結果是真

//c只要參與表示式運算,就會發生整形提公升,表示式 +c ,就會發生提公升,所以 sizeof(+c) 是4個位元組.

//表示式 -c 也會發生整形提公升,所以 sizeof(-c) 是4個位元組,但是 sizeof(c) ,就是1個位元組

int main()

注:%u列印無符號數

#include int i;//全域性變數-不初始化-預設是0。如果為區域性變數為隨機值

int main()

else

return 0;

}

int a, b, c;

a = 5;

c = ++a;// c=6 a=6

b = ++c, c++, ++a, a++;//c=7 ,c=8 ,a=7,b=7,a=8

b += a++ + c;//a=8,c=8,b=7,b=7+8+8=23,a=9

printf("a = %d b = %d c = %d\n:", a, b, c);//9 23 8

寫乙個函式返回引數二進位制中1的個數

比如:15 00001111 4個1

#include #include int main()

count_bit_one 法一

//13

//000000000000000000000000000001101

//-1

//100000000000000000000000000000001 原碼

//111111111111111111111111111111110 反碼

//111111111111111111111111111111111 補碼

int count_bit_one(unsigned int n) // 無符號,解決負數

n = n / 2;

}return count;

}

count_bit_one 法二

// -1

//111111111111111111111111111111111 補碼

//000000000000000000000000000000001

int count_bit_one(int n)

}return count;

}

count_bit_one法三(最佳,高效)

//n = n&(n-1)

//n//13

//1101 n count++

//1100 n-1

//1100 n count++

//1011 n-1

//1000 n count++

//0111 n-1

//0000 n 跳出

int count_bit_one(int n)

return count;

}

兩個int (32位)的整數m和n的二進位制表達中有多少個位(bit)不同?

輸入例子:1999 2299 

輸出例子:7

#include int get_diff_bit(int m, int n)

return count;

}int main()

獲取乙個整數二進位制序列中所有的偶數字和奇數字,分別列印出二進位制序列

#include //00000000000000000000000000001010

void print(int m)

printf("\n");

printf("偶數字:\n");

不允許建立臨時變數,交換兩個整數的內容

臨時變數

int a = 3;

int b = 5;

int tmp = 0;//臨時變數

printf("before: a=%d b=%d\n", a, b);

tmp = a;

a = b;

b = tmp;

加減法-可能會溢位

int a = 3;

int b = 5;

a = a + b; //8

b = a - b; //3

a = a - b; //5

異或的方法

int a = 3; //011

int b = 5; //101

a = a^b; //110

b = a^b; //011

a = a^b; //101

C語言操作符詳解

操作符的存在使c語言更加的靈活,實現更多的功能。但是,操作符的一些繁瑣的使用方式,規則卻常常讓我們這些初學者頭疼。本文將操作符進行總結,彙總一起分享。一,操作符的分類 操作符分為以下幾種 算術操作符,位操作符,賦值操作符,單目操作符,關係操作符,邏輯操作符,條件操作符,逗號操作符,下標引用,函式呼叫...

C語言操作符詳解

我們日常所見到的任何事物都是有個種各樣細小的零件所組成的,比如我們現在用的 cpu 它的內部是由許許多多的二極體 三極體等基本元器件再加上連線各種元器件的導線所組成的。不同的組合方式也就形成了不同的功能,比如alu 控制器 暫存器 儲存器等等。當然我們的c語言也不例外,它也是由最基本的運算所組成的,...

c語言操作符詳解

一 算術操作符 算術操作符共有5個,分別為加法操作符 減法操作符 乘法操作符 除法操作符 和求餘操作符 它們均為雙目操作符,即操作符前後都需要乙個運算元。printf sum d a b printf diff d a b printf mul d a b printf rate d distanc...