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