1. 程式人生 > >C語言基礎(二)

C語言基礎(二)

表現 計算 三種 控制臺 都對 style pan 例如 ble

一、數據類型的定義

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語言基礎(二)