1. 程式人生 > 其它 >基本資料型別與表示式

基本資料型別與表示式

一、資料的儲存

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