三、資料型別
【問】為什麼要寫程式碼?
【答】為了解決生活中的問題。例如:購物、點餐、看電影 等
【比如】購買了一本《C語言》的書,這本書的價格是66(整型),或者66.6(小數),而《C語言》的書名又是字串)。
【問】那麼這些書名啊、價格啊又是如何儲存的呢?
【答】這時候,在C語言中為了能夠描述這些東西就引用了資料型別。對於小數抽象出了一種資料型別,即浮點型。對於整數抽象出來了一種資料型別,即整型。對於字元抽象出來了一種資料型別,即字元型。
【問】為什麼叫浮點型呢?
【答】因為小數點可以浮動。
【比如】66.6,可以表示位6.66 * 10,也可表示0.666 * 100。
【問】為什麼會有這麼多的型別呢?
【答】因為生活中就有這些型別。
1、C語言中的資料型別
☆ char 字元資料型別
☆ short 短整型
☆ int 整型
☆ long 長整型
☆ long long 更長的整型
☆ float 單精度浮點型(精度較低)
☆ double 雙進度浮點型(精度更高)
2、資料型別的用法
(1)字元型別(char)
【比如】有一個 字元 a ,那麼這個 **字元 a ** 怎麼儲存呢?
#define _CRT_SECURE_NO_WARNINGS 1
int main()
{
/* ch是存放字元 a 的儲存空間 */
char ch = 'a'; //將字元 a 放入變數 ch 的空間裡
return 0;
}
(2)整型(int)
【比如】有個人有 20 歲,那麼這個 20 就是整數型別,怎麼表示呢?
#define _CRT_SECURE_NO_WARNINGS 1
int main()
{
/* age(年齡)是存放整型 20 的儲存空間 */
int age = 'a'; //將整型 20 放入變數 age 的空間裡
return 0;
}
(3)短整型(short int)
short int 也可用 short 表示。
【比如】有個數字 10 歲,那麼這個 10 就是短整型(就是比 int 短的 整型),怎麼表示呢?
#define _CRT_SECURE_NO_WARNINGS 1
int main()
{
/* num(數字)是存放短整型 10 的儲存空間 */
int num = 'a'; //將短整型 10 放入變數 num 的空間裡
return 0;
}
(5)單精度浮點型(float)
【比如】一個人的 體重 是 55.5 公斤,怎麼表示呢?
#define _CRT_SECURE_NO_WARNINGS 1
int main()
{
/* weight(體重)是存單精度浮點型 55.5 的儲存空間 */
float weight = 55.5; //將單精度浮點型 55.5 放入變數 weight 的空間裡
return 0;
}
(6)雙精度浮點型(double)
double的精度比float 的精度高。
【比如】一個人的 體重 是 55.5 公斤,怎麼表示呢?
#define _CRT_SECURE_NO_WARNINGS 1
int main()
{
/* weight(體重)是存雙精度浮點型 55.5 的儲存空間 */
double weight = 55.5; //將雙精度浮點型 55.5 放入變數 weight 的空間裡
return 0;
}
【問】資料儲存要空間,那麼每一種型別的空間大小是多少?
3、資料型別的大小
(1)sizeof
sizeof是關鍵字,也是運算子。
【作用】計算型別或者變數所佔空間的大小(單位:位元組)。
(2)進位制數
進位制數的範圍 |
---|
二進位制:0、1 |
八進位制:0、1、2、3、4、5、6、7 |
十進位制:0、1、2、3、4、5、6、7、8、9 |
十六進位制:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F |
我們生活在一個十進位制的世界,即0、1、2、3、4、5、6、7、8、9。
(3)計算機中的單位
計算機只能識別二進位制的數,即位元位(bit)只能使用 0 和 1 來表示。
(4)%d
表示按照整型的格式列印。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char)); // 1(位元組)
printf("%d\n", sizeof(short)); // 2(位元組)
printf("%d\n", sizeof(int)); // 4(位元組)
printf("%d\n", sizeof(long)); // 4(位元組)
printf("%d\n", sizeof(long long)); // 8(位元組)
printf("%d\n", sizeof(float)); // 4(位元組)
printf("%d\n", sizeof(double)); // 8(位元組)
printf("%d\n", sizeof(long double)); // 8(位元組)
return 0;
}
【注】C語言中規定: sizeof(long) >= sizeof(int) !!!
【問】為什麼C語言中的整型和浮點型的種類很多?
【答】為了更好的合理利用C語言的空間,提高程式碼空間的利用效率。
(5)%zu
列印 sizeof 返回值時輸出的是無符號整型。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
printf("%zu\n", sizeof(char)); // 1(位元組)
printf("%zu\n", sizeof(short)); // 2(位元組)
printf("%zu\n", sizeof(int)); // 4(位元組)
printf("%zu\n", sizeof(long)); // 4(位元組)
printf("%zu\n", sizeof(long long)); // 8(位元組)
printf("%zu\n", sizeof(float)); // 4(位元組)
printf("%zu\n", sizeof(double)); // 8(位元組)
printf("%zu\n", sizeof(long double)); // 8(位元組)
return 0;
}