基本資料型別與表示式
一、資料的儲存
1.整型資料——佔兩個位元組,範圍[-32768 , 32768]
(1)原碼:正數的符號用0,負數的符號用1,其餘各位表示數值的絕對值。
(2)反碼:正數為本身;負數,數值部分每位求反,符號位不變。
(3)補碼:正數為本身,負數為其反碼+1(計算機中以補碼的表示數值)。
——總結:正數的原碼,反碼,補碼相等
負數的反碼為原碼取反(符號位不變),補碼為反碼+1
2.實型資料 的儲存方式:符號位+階碼+尾數。例如:- 1.23e +02
3.字元型資料 ——每個字元佔用一個位元組,儲存ASCII碼
二、基本資料型別
1.整型與整型常數
(1)整型變數分類 ——無符號(unsign)/有符號、長短
(2)整型常量 表示式
①十進位制,②八進位制,③十六進位制(0x / 0X + 0~9,a~f / A~F)
(3)整數型別
①long型常數:123L/123l ②unsigned型常數:123U /123u ③unsignedlong型常數:123LU / 123lu
Tip:比長整型數還大的數要用實數表示。
2.字元型
(1)字元型常量:'a','0'(注意:單引號)
(2)ASCII字符集(256個)
——整型變數與字元變數的定義和賦值可以互換(在ASCII碼的範圍內)
(3)轉義字元
3.實型
(1)資料長度:
單精度浮點型 —— float ——32位
雙精度浮點型 ——double ——64位
(2)資料精度不等於取值範圍
Tip:①不是所有的實數都能在計算機中精確表示;
②實型常量(浮點數)的型別都是double
(3)實數的表示——浮點表示法(0.123)/科學計數法(1.2e-5)
三、資料的輸入與輸出
1.整型資料的輸入與輸出
(1)格式
(2)指定整型資料的輸出寬度:例如:%md,%5d(資料寬度為5)// 如果實際輸出數小於寬度,用空格補上。
例題:
scanf("%o%d",&a,&b); printf("%d %5d",a,b);
輸入:17 17
輸出:15 17
2.實型資料
(1)輸出:float與double :都以%f(小數形式輸出且保留6位小數),%e(指數形式即小數點前有且僅有一位非零數字)
(2)輸入:
①float:使用%f,%e
②double:使用%lf,%le(多一個限定詞 l(long))
(3)控制輸出格式:例如:%5.3f——輸出寬度為5,小數部分 3 位,小數點 1 位
3.字元型
(1)使用scanf()和printf():格式控制說明為%c
(2)使用getchar()與putchar():每次僅輸入輸出一個字元
例題:
程式碼:
#include <stdio.h> int main () { char ch; ch = getchar(); while(ch!='#'){ if(ch>='A'&&ch<='Z'){ ch=ch-'A'+'a'; }else if(ch>='a'&&ch<='z'){ ch=ch-'a'+'A'; } putchar(ch); ch = getchar(); } return 0; }
解析:'m' - 'a' + 'A'='M' ——ASCII中‘a'與’A‘為任意一個字母小寫與大寫間的資料差。
4.型別轉換:(只是為了本次運算而進行的臨時性轉換)
(1)自動型別轉換:參與運算量的型別不同,則先轉換成同一型別,然後進行運算。
(2)強制型別轉換:轉換的是運算子,不是函式,例如 強制轉換應寫成(int)x,而不是int(x)
四、表示式
1.算術表示式
(1)優先順序
(2)結合方向:單目為從右向左,雙目為從左向右。
(3)注意:
① / :整數除整數得整數,且不會四捨五入,直接捨去小數部分。
負整數結果的四捨五入沒有規定,所以結果不確定。
如果要精確的結果,可以把一個運算元轉換為浮點數 。
②% :針對整型資料
負數%沒有規定符號
(4)++,--
①++i,--i :i=i+1;取i值為++n的值
②i++;i-- :取 i 值為表示式i++的值,再來 i=i+1
2.賦值表示式
3.關係表示式
4.邏輯表示式
(1) 優先順序與結合方向:!(最高,右結合) && || (左結合)
(2)!a:如果a為真,!a為0()假,!a的值永遠為0或1。
5.條件表示式:exp1?exp2:exp3——先判斷exp1,真(非0)執行exp2,反之。
6.逗號表示式:從左向右,以最後一個為表示式的值
7.位運算
(1)運算子:
① ~ 按位取反 ②& 按位與(不同為0,同1為1,同0為0) ③^ 按位異或:相同取0,不同取1
④ | 按位或 ⑤移位運算子 << 左移,>>右移 (空出位置用0填補)
(2)運算元只為整型或字元型的資料以及其變體,運算時先將資料轉化為二進位制。
(3)異或的特殊操作:
①a^a=0 ②a^~a=二進位制全是1 ③ ~(a~^a)=0