官术网_书友最值得收藏!

3.5 C51的常量類型

常量也是C51中常用的數據形式。與變量的表示相比,常量的表示要相對簡單,但是同樣要注意表示的規范,否則會導致程序出錯。C51中的常量有整型常量、浮點型常量、字符型常量和轉義字符4種類型。下面分別對其進行介紹。

3.5.1 整型常量

整型數據包括整型變量和整型常量兩種,整型變量的定義前面已經詳細介紹。整型常量及整型常數可以表示十進制、八進制、十六進制的整數值。根據表示的數的進制不同進行區分,整型常量的表示如表3.4所示。

表3.4 整型常量的表示

說明

整型常量表示十六進制數時,其中的引導符0是必須有的,字母X既可用大寫也可用小寫,含義相同。

在整型常量后添加一個字母“L”或“l”時,表示該數為長整型數。例如23L、0713L、0Xfd4l等。整型常量在不加特別說明時總是正值。如果需要的是負值,則必須將負號“-”放置于常量表達式的最前面,例如-0x56、-09。整型常量在程序中的使用,示例如下。

        #include <stdio.h>                                             //頭文件

        void main()                                                    //主函數
        {
              int a,b,c;                                               //定義變量
              a=12;                                                    //十進制常量賦值給a
              b=012;                                                   //八進制常量賦值給b
              c=0x12;                                                  //十六進制常量賦值給c
              printf("a=%d,b=%d,c=%d\n",a,b,c);                        //輸出十進制數據
              printf("a=%o,b=%o,c=%o\n",a,b,c);                        //輸出八進制數據
              printf("a=%x,b=%x,c=%x\n",a,b,c);                        //輸出十六進制數據
        }

這段程序可在Keil μ Vision3集成開發環境中運行,執行結果如下。

        a=12,b=10,c=18
        a=14,b=12,c=22
        a=c,b=a,c=12

在該程序中,先聲明了整型變量a、b和c。接著分別將十進制常量賦值給a,將八進制常量賦值給b,將十六進制常量賦值給c。最后,分別按照十進制、八進制和十六進制的格式輸出。

3.5.2 浮點型常量

浮點型常量也稱為實型常量,只可以用十進制來表示。一般來說,浮點型常量的值由整數部分、尾數部分和指數部分組成。在不加說明的情況下,浮點型常量通常為正值。如果需要表示負值,則在常量前使用負號,如18.47、-45.63、-4.2e-16、8.165。

在C51中,所有浮點常量都被默認為float型。對于絕對值小于1的浮點型常量,其小數點前面的零可以省略。例如0.68可寫為.68,-0.0314E-4可寫為-.0314E-4。

在編譯環境中,默認的輸出格式為浮點數時,最多只保留小數點后六位,不夠的后面補零。在浮點型常量中不得出現任何空白符號。字母E或e之前必須有數字,其表示形式為“數字e±數字”,且浮點型常量中E或e后面的指數必須是整數,例如“e2.3”、“e -2.5”等都是不合法的指數形式。

浮點型常量在程序中的使用,示例如下:

        #include <stdio.h>                                             //頭文件

        void main()                                                    //主函數
        {
              float a,b,c;                                             //浮點型變量
              a=1.2;                                                   //賦值
              b=.27;
              c=1.7E-4;
              printf("a=%f,b=%f,c=%f\n",a,b,c);                        //輸出結果
              printf("%f",2.31);
              while(1);
        }

這段程序可在Keil μ Vision3集成開發環境中運行,執行結果如下。

        a=1.200000,b=0.270000,c=0.000170
        2.310000

在該程序中,先聲明了浮點型變量a、b和c。接著分別將浮點型常量賦值給a、b和c。最后輸出各個浮點型數據,其中還使用了printf語句來直接輸出浮點型常量。

3.5.3 字符型常量

字符型常量用來表示單個字符,其用一對單引號括起來。其中單引號只起定界作用,并不表示字符本身,例如'F','5','?'。在C51中,字符常量的單引號中的字符不能是單引號(')或反斜杠(\)。如果需要使用這兩個字符,則需要采用轉義字符來表示,這將在后面的內容中進行介紹。

在C51中,字符是按其所對應的ASCII碼值來存儲的,一個字符占一個字節。因此也可用該字符的ASCII碼值來表示該字符,例如十進制數65表示大寫字母'A',十六進制數0x5d表示符號']',八進制數0110表示大寫字母'B'等。

另外,格式控制符是無法在程序中顯式地表示的。因此,這些格式控制字符不能用符號表示,但可以用ASCII碼值來表示。例如,十進制數13表示回車符,八進制數033表示Esc,十六進制數0x0A表示換行符等。

由于C51語言中,字符常量和整型數據(short型)具有相同的取值范圍,所以字符常量可以像整型數據一樣在程序中進行相關的運算,示例如下。

        '5'-5;                                                  //執行結果53-5 = 48
        'B'+32;                                                 //執行結果66+32 = 98
        'b'-32 ;                                               //執行結果98-32 = 66

注意

這里值得強調的是字符'8'和數字8的區別,前者是字符常量,后者是整型常量,它們的含義和在計算機中的存儲方式都截然不同。

字符常量的表示以及字符常量的運算程序示例如下。

        #include <stdio.h>                                    //頭文件

        void main()                                           //主函數
        {
              char c1,c2;                                     //定義字符變量
              c1='A';                                         //賦值
              c2='B';
              c1=c1+32;                                       //轉換大小寫
              c2=c2+32;
              printf("c1=%c\nc2=%c",c1,c2);                   //輸出結果
        }

這段程序可在Keil μ Vision3集成開發環境中運行,執行結果如下。

        c1=a
        c2=b

本例是將兩個大寫字母轉換為小寫字母。因為'a'的ASCII碼為97,而'A'為65,'b'的ASCII碼為98,'B'則為66。從ASCII代碼表中可以看到每一個小寫字母比大寫字母的ASCII碼大32,即'a'='A'+32。

3.5.4 轉義字符

轉義字符用于表示ASCII碼字符集中的格式控制字符和特定功能字符,這些字符都是不可打印的。例如,用于表示字符常量的單引號('),用于表示字符串常量的雙引號(")和反斜杠(\)等。轉義字符是C51語言中一種特殊的字符表示形式,用反斜杠“\”后面加一個字符或一個八進制或十六進制數表示,轉義字符的表示如表3.5所示。

表3.5 轉義字符

如果需要在字符常量中使用單引號和反斜杠時,都必須使用轉義字符表示,即在這些字符前加上反斜杠,例如“\'”、“\\”。

使用轉義字符時需要注意以下幾點。

?在C51程序中,不可打印字符必須用轉義字符來表示。

?轉義字符中只能使用小寫字母來表示,每個轉義字符只能看作一個字符。例如“\T”是錯誤的轉義字符。

?“\v”垂直制表和“\f”換頁符在屏幕顯示時沒有任何影響,但是在打印輸出時,會影響到打印機的操作。

?在C51中,可以使用轉義字符“\ddd”表示任意字符。其中,“\ddd”為斜杠后面跟三位八進制數,該三位八進制數的值即為對應的八進制ASCII碼值。

?在C51中,可以使用轉義字符“\xhh”表示任意字符。其中,“\x”后面跟兩位十六進制數,該兩位十六進制數為對應字符的十六進制ASCII碼值。

主站蜘蛛池模板: 广饶县| 辉南县| 句容市| 平顶山市| 探索| 天水市| 惠东县| 云梦县| 昆山市| 吴旗县| 竹山县| 汤阴县| 北辰区| 新丰县| 龙里县| 丰宁| 甘肃省| 新郑市| 醴陵市| 个旧市| 乌兰浩特市| 修武县| 荔浦县| 延吉市| 白玉县| 琼海市| 读书| 镇坪县| 清苑县| 彝良县| 洱源县| 平武县| 雅江县| 博湖县| 梧州市| 冕宁县| 桦甸市| 府谷县| 天镇县| 平昌县| 桐梓县|