C語言基礎(二)
一、數據類型的定義
1)變量
1.變量的定義:
數據類型 變量名【標識符】
2.變量的賦值:
變量名 = 值;
3.變量定義與賦值
數據類型 變量名【標識符】 = 值
標示符的命名規則:
1、字母、數字、下劃線
2、不能以數字開頭
3、見名知義
4、不能和同一函數內的其他標示符重復
5、不能使用C語言關鍵字
6、區分大小寫
2)常量的定義:
1、const 數據類型 常量名
2、【宏定義】#deifne 常量名 值
註意:
1、通過#define 定義的常量 是根據值來匹配數據類型的
2、const 修飾的常量是不安全 可以通過指針來修改
二、進制:
(一)二進制:
1.二進制逢二進一,
2.所有的數組是0、1組成
1)十進制轉二進制:
除二反序取余法:1.將十進制數每次除以2
2.取出余數
3.按照結果倒敘依次獲取結果
2)二進制轉十進制:
權值法: 1.將二進制數各個位數從0位開始乘以2的N冪
2.將各個位數的結果相加
(二)八進制:
1.八進制逢八進一
2.所有的數組是0到7組成
1)十進制轉八進制:
除八反序取余法:1.將十進制數每次除以8
2.取出余數
3.按照結果倒敘依次獲取結果
(三)十六進制:
1.十六進制逢十六進一,
2.所有的數組是0到9和A到F組成 字母不區分大小寫
1)十進制轉八進制:
除十六反序取余法:1.將十進制數每次除以16
2.取出余數
3.按照結果倒敘依次獲取結果
*進制在程序中打印(printf)
%d 將數據按照十進制輸出
%o將數據按照八進制輸出
%x將數據按照十六進制小寫輸出
%X將數據按照十六進制大寫輸出
註意:
在程序中沒有辦法表示一個二進制數
三、原碼、反碼、補碼
一個有符號的整型數據可以分為兩部分
1.一部分是符號位,一部分是數字位
3.無符號數據類型只包含數字位部分
註意
溢出:在數據進行操作的時候會導致超出數據類型大小,會向前位進1,多於原始數據類型大小,會被系統自動舍棄 保留從後面開始數據類型大小的位數
四、sizeof()
求出數據類型在內存中占的大小(BYTE)
int value =sizeof(變量名);
int value = sizeof(數據類型) sizeof 數據類型
註意:根據32位操作系統獲取的數據類型大小
char(字符型)【1】<short(短整型)【2】<=int(整型)【4】|float (單精度浮點型)【4】|long(長整型)【4】<long long(長長整型)【8】|double(雙精度浮點型)【8】
五、輸出和輸入:
1)輸出字符的兩種方式:
1、printf("%c",變量)
2、putchar(字符)
2)輸入字符的兩種方式:
1、scanf("%c",&b變量)
2、變量=getchar()
六、數據類型:
1)字符型:
1.char 用於存儲一個單一的字符
2.在格式化輸入printf("%c",變量)通過占位符%c來接收的
3.每一個char類型都對應在ASCII中有具體的值
例如:數字【0】對應的ASCII值為48
字母【A】對應的ASCII值為65
2)浮點型:
1.float 用於存儲帶有小數的數據
2.在格式化輸入printf("%f",變量)通過占位符%f來接收的
3.double 用於存儲帶有小數的數據 數據長度比float更長
註意:因為將小數轉化為二進制時不是一個精確的值,所以浮點型都會有數據偏差
3)轉義字符:
計算機會使用一些字符來完成程序設計,如果在編程中想使用這些字符的本意,需要通過【\】來轉義
註意:想在控制臺中輸出% 需要使用【%%】
課後練習題(答案在後面)
1.八進制必須以_____開頭,十六進制必須以_______開頭。
2.標識符只能由_______、_______和_______組成。
3.在計算機中的進制表現形式有三種,分別是_____、 _______、 ________。
4.C 語言提供了 sizeof 運算符,該運算符主要用於________。
5.二進制和八進制相互轉換
5.1 111 010 101 011 轉換為八進制後結果為?
5.2 76321 轉換為二進制結果為?
6.二進制和十六進制相互轉換
6.1 1111 1010 1101 1011 轉換為十六進制後結果為?
6.2 a6b2f1 轉換為二進制結果為?
7.請寫出-8的原碼、反碼、補碼
8.計算如下程序結果
8.1short a = 0xfffe;
printf("%d\n", a); //結果為多少?
8.2unsigned short a = 0xfffe;
printf("%u\n", a); //結果為多少?
8.3short a = 0x7fff + 2;
printf("%d\n", a); //結果為多少?
8.4unsigned short a = 0xffff + 5;
printf("%u\n", a); //結果為多少?
答案
1.0
2.0x
3.數字、下劃線、字母
4.求出數據類型在內存中占的大小
5.1 7253
5.2 111 110 011 010 001
6.1 f9db
6.2 1010 0110 1011 0010 1111 0001
7 .原碼: 1000 0000 0000 0000 0000 0000 0000 1000
反碼:1111 1111 1111 1111 1111 1111 1111 0111
補碼:1111 1111 1111 1111 1111 1111 1111 1000
8.1 65534
8.2 65534
8.3 -32767
8.4 4
C語言基礎(二)