學習筆記 字元型資料

2021-07-25 01:40:58 字數 3462 閱讀 9160

字元型資料

字元常量:

用單引號括起來的字元,如:'a'  ,  '#'  ,  '%'  ,  'd'  。(注:區分大小寫)

如果把字元型資料用整型的輸出方式輸出,將輸出其ascii碼值,如果把字元型資料用來做整型運算,將用其ascii碼值進行運算。

示例**:

#include #include #include /*

這個程式用來測試字元型資料和整型資料的轉換輸出

*/int main()

結果:

解析:1.字元型資料可以當做整型來用,整型也可以當做字元型來用。他們的轉換基於ascii碼。

附ascii碼表:

解析:

1.十進位制列即十進位制ascii碼。

2.ascii碼0~31都為格式控制符號。

3.ascii碼表中:a~z是從65開始的連續的26個值。a~z是從97開始的連續的26個值。

4.高-低四位是先看高四位,後看低四位的。如a的二進位制表示為高四位的0100+低四位的0001。而他的十六進製制表示為高四位的4+低四位的1。

5.ascii碼儲存最高為0~127,只能佔7位。所以字元型資料只需要乙個位元組即可儲存

(乙個位元組實際上有8位,所以我們把用於儲存

字元型資料的位元組的最高位固定為0)

6.字元型分為有符號([signed] char)的和無符號(unsigned char)的區別如下:

字元型資料

型別識別符號

位元組範圍

備註[signed] char

1-128~127

[-2^7,((2^7)-1)]

unsigned char

10~255

[0,((2^8)-1)]

字元型資料的輸入,輸出

1.scanf()和printf()

2.getchar()和putchar()

**:

#include #include /*

這個程式用來測試字元型資料的幾種輸入方法

*/int main()

結果:

解析:

1.putchar()和getchar()的作用和常用的scanf()和printf()相差不大。

2.putchar()括號裡的引數是int,所以裡面可以放int型和char型的資料。並將它們統一解析成ascll碼對應的字元輸出。

3.fflush(stdin)是用來清空標準輸入快取區的。因為在第一次輸入字元型資料之後,我們一般用單擊enter鍵輸入乙個換行符來結束輸入。所以這個時候輸入快取區中的情況是:

[你輸入的字元][\n]所以scanf("%c",&c)會把你輸入的字元取出並賦值給c。但注意用於結束輸入的換行符是仍然留存在輸入快取區里的!所以當執行到ch=getchar()時,會直接把\n作為第二個輸入字元賦值給ch!

為了避免這種情況,我們在第一次scanf()從快取區得到需要的資料之後,使用fflush(stdin)來清空整個標準輸入快取區的資料,以保證getchar能正確的得到我們希望放入其中的資料。

(此外還有fflush(stdout)用於清空標準輸出快取區。但此處沒有用到。)

轉義字元

所有的轉義字元和所對應的意義

轉義字元

意義ascii碼

\a響鈴(bel)7\b

退格(bs),將當前位置移到前一列8\f

換頁(ff),將當前位置移到下頁開頭

12\n

換行(lf),將當前位置移到下一行開頭

10\r

回車(cr),將當前位置移到本行開頭

13\t

水平製表(ht)(跳到下乙個tab位置)9\v

垂直製表(vt)

11\\

代表乙個反斜線字元''\'

92\'

代表乙個單引號(撇號)字元

39\''

代表乙個雙引號字元

34\0

空字元(null)

0\ddd

1~3位八進位製所代表的任意字元

三位八進位制

\xhh

1~2位十六進製製所代表的任意字元

二位十六進製制

**示例1:

#include #include /*

這個程式用於測試轉義字元的使用

*/int main()

結果1:

解析1:

1.\t會自動將順序輸出的數字排序整齊。如圖中所示。

2.\t代表若干空格(一般是8個)

3.\n代表換行

**示例2:

#include #include /*

這個程式用來測試一些轉移字元的作用。

*/int main()

結果2:

漢字編碼初步

因為漢字的數量遠大於英文本母,所以漢字在計算機中使用兩個位元組儲存。

為了區別與英文,避免乙個漢字的兩個位元組被解析成兩個英文本母。漢字的二進位制儲存中這兩個位元組的最高位都為1

(英文的二進位制儲存中位元組最高位為0)

示例:當我們編寫如下圖這樣乙個程式時,我們把第7行結尾的分號換成漢字的分號

結果在編譯中出了錯誤,並且錯誤提示有兩行。分別是"\243"和"\273"如果我們把這兩個字元轉成二進位制,會發現其實他們的最高位都是1。這說明在這個地方出現的漢字,被當成了兩個英文解析。

字串如:"abc"    "hello!"

都是字串(由多個字元連線成)

字串的儲存是通過儲存連續的字元,並在結尾加\0來表示結束。

如:"abc"雖然只有三個字元,但這個字串卻要占用四個位元組,因為這個字串在儲存時除了儲存abc這三個字元之外,還需要在abc後面單獨儲存乙個\0來代表這個字串已經結束。

注: 1.編譯系統時,會自動在乙個字串的結尾加上\0來作為字串結束標誌。

2.'\0'不是字串的一部分,他只作為字串的結束標識(如printf("abc");只會輸出abc而不會輸出'\0')。

3.空字串 如:""  占用乙個位元組。

學習筆記 泛型

object型別引數有2個問題 1 裝箱拆箱,效能損耗 傳入乙個int值 棧 object又在堆裡面,如果把int傳遞進來,就會把值從棧裡面copy到堆裡 使用的時候,又需要用物件值,又會copy到棧 拆箱 2 型別安全問題,可能會有,因為傳遞的物件是沒有限制的 泛型方法與普通方法效能一致,還能乙個...

泛型學習筆記

泛型是 2.0 版 c 語言和公共語言執行庫 clr 中的乙個新功能。泛型將型別引數的概念引入 net framework,型別引數使得設計如下類和方法成為可能 這些類和方法將乙個或多個型別的指定推遲到客戶端 宣告並例項化該類或方法的時候。例如,通過使用泛型型別引數 t,您可以編寫其他客戶端 能夠使...

筆記 浮點型資料

浮點數 floating point number 就是實數 real number 浮點數有兩種表示形式 1 十進位制小數形式。它由數字和小數點組成。0.123 123.123.0 0.0都是十進位制小數形式。2 指數形式。如123e3或123e3都代表123 103。注意字母e或e之前必須有數字...