一:資料型別
1:整數型別
包括整型,長整型。短整型。區別在於,採用不同位數的二進位制編碼表示,佔用不同的儲存空間,表示不同的數值範圍,32位作業系統
型別說明符
|
數的範圍
|
位元組數
|
---|---|---|
int(整型)
|
-2147483648 到2147483647
|
4
|
unsigned int(無符號整型)
|
0~65535,即 0~(2-1)
|
4
|
short int(短整型)
|
-32768~32767,即 -2~(2-1)
|
2
|
unsigned short int(無符號短整型)
|
0~65535,即 0~(2-1)
|
2
|
long int(長整型)
|
-2147483648~2147483647,即 -2~(2-1)
|
4
|
unsigned long(無符號長整型)
|
0~4294967295,即0~(2-1)
|
4
|
原碼
反碼
補碼
對應的是%d
2:實數型別
實數型別資料又稱為實數,實型資料或浮點數,指的是帶有小數部分的非整數數值
c語言提供了2種表示實數的型別,單精度型(float)和雙精度型(double)
float佔4個位元組,double佔8個位元組,double比float的資料精確的多
float對應的%f,double對應的%lf
3:字元型(char)
分為單個字元和字串
'aaa' 就是單個字元
"aaaa" 就是字串
字元是以ASCII形式儲存的,字元'A'的ASCII對應的十進位制數65,a:表示97,之間相差32
二:常量和變數
1:常量
就是值不能改變的為常量
1:整型常量
整型常量就是整數
可以用十進位制,八進位制,16進位制
2:實型常量
又被稱為浮點數,2種表示方法
(1)小數形式,由數字0-9和小數點組成,必須要有小數點 4.5 -45.232
(2)指數形式,由十進位制加階碼,階碼就是e,或者E,e(E)前面必須要有數字,後面必須是整數
合法的:
2.3E5,5.6E-3,
不合法的:
123(沒有小數點),E4(E之前沒有數字),23.-E3(負號的位置不對),2.7E(無階碼)
3:字元常量
字元常量,是一對單引號表示的字元,‘5’就是字元常量
(1)只能用單引號標識,不能使用雙引號
(2)字元常量只能是單個字元,不能是多個字元
(3)字元可以是字符集中的任意字元
大部分採用ASCII字符集
跳脫字元的含義
\n | 換行 | 10(ASCII) |
\t | 製表 | 9 |
\b | 退格 | 8 |
\0 | 空字元 | 0 |
\\ | 反斜槓字元 | 92 |
\' | 單引號字元 | 39 |
\'' | 雙引號字元 | 34 |
\ddd | 1~3位八進位制代表字元 | |
\xhh | 1~2位十六進位制代表的字元 |
就是裡面對應著某個數字
4:字串常量
字串常量,字串的結束符為\0看不到,但是是存在的,遇到這個\0就結束
"a"和'a'是2個不同的常量'a'字元a代表的是個數字,而"a"代表的是a和\0,所以的話,2個事不同的常量
使用strlen函式來計算字串的長度(不計算到\0)
#include <stdio.h> int main() { char arr1[] = "adada"; ###裡面有\0 char arr2[] = {'a','b','c'}; ###主動存放變數,沒有\0,就會列印其它的地方(就是儲存空間),遇到\0就結束 printf("%s\n",arr1); int len = strlen(arr1); printf("長度是%d\n",len); printf("%s\n",arr2); int len1 = strlen(arr2); printf("長度是%d\n",len1); } #這個陣列就是arr1[0] = 'a'等
5:define和const定義的常量(符號常量)
1、define定義常量
寫在外面主函式的外面,並且必須是大寫的
#define MAX 10 #include <stdio.h> int main() { printf("%d",MAX); }
2、const定義變數
修飾的變數,本質是變數,但是不能直接去修改,所以是具有常量的屬性的
可以用陣列來判斷,因為陣列的話,裡面必須是常來那個,不能是變數,寫在主函式里面
#include <stdio.h> int main() { const int a = 10; printf("%d",a); } #下面的寫法是錯誤的 #include <stdio.h> int main() { const int a = 10; a = 20; printf("%d",a); }
利用陣列證明:
6:列舉常量
2:變數
1:區域性變數
區域性變數,就是在{}裡面所定義的變數,只能在裡面生效,在其他位置沒有用
案例
#include <stdio.h> int main() { { int a = 100; printf("%d\n",a); return 0; } //printf("%d",a); ##{}巢狀的話,裡面的定義的,就只能在裡面使用 如果在第一層的{}裡面定義的話,就能直接在裡面使用 }
2:全域性變數
就是定義在{}外面的變數,就能在全域性的使用這個值,不受限制
案例
int a = 100; #include <stdio.h> int main() { { printf("%d\n",a); #裡面也能使用 } printf("%d\n",a); ##外面也能使用 }
3:變數的作用域
區域性變數的作用域:就是在那定義的就只能在這個範圍內使用
全域性變數的作用域:就是在全域性定義的話,就能在全域性的範圍內使用
4:變數的生命週期
區域性變數的生命週期:就是程式碼執行到了那個範圍的的話,就生效,離開了這個範圍的話程式碼就自動的銷燬
全域性變數的生命週期:程式執行後,就生效,程式結束後,就銷燬,就相等於全域性變數的生命週期等於程式的生命週期
3:返回的值用什麼來替代
%d 列印整型
%c 列印字元
%s 列印字串
%f 列印float型別資料
%lf 列印double型別的資料
%zu 列印sizeof的返回值
char表示字元常量和字串常量