c語言基礎查漏補缺

2021-06-28 20:11:42 字數 4713 閱讀 1752

該部分只是用來記錄c語言模糊的知識點

以下寫法錯誤

char c = '123';

char c1 = '哦';

1.

作用

用來計算乙個變數或者乙個常量、一種資料型別所佔的記憶體位元組數。

2.基本形式

sizeof( 變數\常量 )

int size = sizeof(a);

sizeof 變數\常量

int size = sizeof a;

sizeof( 資料型別 )

intsize = sizeof(int);

不能是sizeof 資料型別

關係運算子中==、!=的優先順序相等,<、<=、>、>=的優先順序相等,且前者的優先順序

低於後者:2==3>1

關係運算子的結合方向為「

從左往右

」: 4>3>2

關係運算子的優先順序小於算術運算子:3+4>8-2

3 > 4 + 7    //    0

(3>4) + 7 // 7

5 != 4 + 2 * 7 > 3 == 10 // 0

字串

有三種初始化方法

char s = ;//字串

char s1[4] = ;//字串

char s3 = "mj";//字串會自動在尾部新增'\0',他的長度還是4

下面**就會出現一些問題

char s2[4] = ;//不是字串,只是字元陣列 第1、 2如果不新增結束標誌,字串就會有問題。 比如 在列印的時候

char s = ;

char s2[4] =

printf("%s\n",s2);//因為沒有結束標誌,列印的時候 會輸出leleo等亂七八糟的字元,就是因為在記憶體中

出現錯誤的原因

s2 l

e sl e

o \0

printf("%s\n",s);

puts(s);//

兩者區別

1 printf

可以輸出多個,

puts

只能輸出乙個,

2puts()

自動換行

scanf()

//可以同時讀取多個字串,不能讀取空格tab 存放完畢後,系統會在尾部加上乙個結束標記\0

gets

(s);//不安全的,一次只能讀乙個字串,可以讀取空格 、tab的字串 

存放完畢後,系統會在尾部加上乙個結束標記\0

一維字串陣列可以存放乙個字串

二維字串陣列,可以存放多個字串

1、字元輸出函式putchar  (一次性只能輸出乙個字元)

putchar(65

);//

直接在控制台輸出a

putchar

('a'

);//

直接在控制台輸出

a

2、字元輸入函式getchar  (一次性只能輸出乙個字元)

1、strlen函式(測量乙個字串的字串長度,不包括結尾識別符號』\0'不是測量字元數量 ,乙個中文佔3個字串長度)注意:char s1 =;缺少結尾標示符\0,要經常注意這個問題

2、strcpy函式()將右邊的字串複製到到左邊的字串

3、strcat函式將右邊的字串新增到到左邊的字串注意:要注意左邊的長度要足夠

4、strcmp函式比較左右兩邊字串的長度

兩個字串從左至右逐個字元比較(按照askii碼大小比較),直到字元不相同或者遇見』\0』為止。如果全部字元都相同,返回0.如果不相同,則返回兩個字串中的第乙個不相同字元asc碼的差

5、strlwr函式所有字母小寫

6、strupr函式所有字母大寫

int 4位元組

short 2位元組

long 8位元組

long long 8位元組

long int a = 1000000000;

long a =100000000;//這兩種寫法都是一樣的 long int =long

printf("%ld",b);//如果是long型別列印的時候輸出操作符為%ld

long long c = 1000000000;

printf("%lld\n",c);

1、 & 按位與

對應的二進位都為1 結果才為1,否則結果為0

例如:5 & 3 結果為1

0 1 0 1 (5)

0 0 1 1 (3)

0 0 0 1 (1)

printf("%d\n",5&3);//最後輸出1 ,說明計算正確

2、| 按位或

對應的二進位有乙個為1就為1,否則為0

例如:5 | 3 結果為7

0 1 0 1 (5)

0 0 1 1 (3)

0 1 1 1 (7)

printf("%d\n",5|3);//最後輸出7,說明計算正確

3、^ 按位異或

對應的二進位不相同就為1,否則為0

自己^自己 結果為0 比如8^8

交換 9^5^6 == 9^6^5

任何數值跟0進行異或,結果還是原來的數值 ,9^0=9

a^b^a = =b

例如:5 | 3 結果為7

0 1 0 1 (5)

0 0 1 1 (3)

0 1 1 0 (6)

4、~ 按位取反

對整數a

的各二進位進行取反,符號位也取反(0變

1,1變

0)

5、《左移

把整數a

的各二進位全部左移n位,

高位丟棄,低位補0。

左移n位其實就是乘以2的

n次方由於左移是丟棄最高位,

0補最低位,所以符號位也會被丟棄,左移出來的結果值可能會改變正負性

例如:9<<1 ->9*2 ==18

9<<2 -> 9*2*2 =36

9<9*2的n次方

6、《右移

把整數a的各二進位全部右移n位,

保持符號位不變

。右移n

位其實就是除以2的

n次方為正數時,

符號位為

0,最高位補0

為負數時,符號位為

1,最高位是補

0或是補

1取決於編譯系統的規定

習題 *在不用引入其他變數的情況下,使用位異或^運算子實現兩個變數值的互換

int a=10;

int b=9;

a = a^b; //a=10^9

b = a^b; //b = 10^9^9=10

a = a^b; // a= 10^9^10 = 9

*使用位與&運算子變數的奇偶性

int a=15;// 15:1111

int b =14;//14:1110

//規律 :偶數最後一位肯定是0,奇數最後一位肯定是1

/**15 :1111

1 0001

-----------

0001 =1

8 1000

1 0001

----------

0000 = 0

*/if(a&1==0)

printf("偶數");

else printf("奇數");

*編寫乙個函式,用來輸出整數在記憶體中的二進位制形式

int main()

void printbinary(int num)

}

C語言查漏補缺

char a 2 20 a 1 hello 這是錯誤的。c語言把這語句解釋為乙個指標與另乙個指標之間的 非法的 賦值運算。但是在初始化時,char a 2 20 是允許的。對於字串陣列,可以使用 法1 char strs 2 strs 1 hello 法2 char strs 2 20 strcpy...

c語言查漏補缺 指標

1,表示式 p 和 優先順序相同,結合方向自右向左,因此等價於 p 也就是先得到p所指向的變數值 p 再使p p 1。注意區別 p 先取得當前p所指向的變數值,再使p指向後乙個變數,相當於a i p 先取得當前p所指向的變數值,再使p指向前乙個變數,相當於a i p 先使p指向後乙個變數,再取得當前...

Python基礎索引 查漏補缺

2.python基礎語法 二 3.python基礎語法 三 4.python基礎語法 四 5.python基礎語法 五 6.python基礎語法 六 7.python基礎語法 七 8.python基礎語法 八 9.python基礎語法 九 10.python基礎語法 十 11.python基礎語法 ...