該部分只是用來記錄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基礎語法 ...