- 零基礎(chǔ)學(xué)單片機C語言程序設(shè)計
- 趙建領(lǐng) 薛園園等編著
- 1032字
- 2018-12-31 21:41:35
3.7 分隔符與const修飾符
分隔符和修飾符是計算機語言中很重要的組成部分,下面分別介紹C51的分隔符和const修飾符。
3.7.1 C51分隔符
分隔符在C51程序語言中起輔助標識和分界的作用,如+、-、*、/、!、|、<、>、=、.、,、:、;、'、#等。這些簡單分隔符是由除字母、數(shù)字、下畫線以外的單個ASCII字符組成的符號。除此以外,C51中還有復(fù)合分隔符,例如<=、!=、>=、{、}、[、]、(、)等。復(fù)合分隔符是特定字符的某種組合。
C51的分隔符常用于數(shù)組、結(jié)構(gòu)、指針以及語句等情況,下面舉出常用的分隔符示例。
?“;”分隔符:主要用于語句的末尾,起到隔離語句的作用,例如例如int r;。
?“[ ]”分隔符:主要用于對數(shù)組說明,例如char ch[ ]=''Hello Everyone!''。
?“( )”分隔符:主要用于進行隔離,例如s=area(r)。
?“,”分隔符:主要用于進行隔離,例如char ch1,ch2。
?“{}”分隔符:主要用于進行復(fù)合語句的隔離,例如for {i=0;i<10;i++}。
?“*”分隔符:主要用于做指針,例如char *p1。
?“#”分隔符:主要用于做預(yù)處理偽指令,例如#define PI 3.14159。
?“^”分隔符:主要用于標識特殊寄存器的位,例如sbit P10=P1^0。
3.7.2 const修飾符
在C51語言中,用關(guān)鍵字const修飾的是一類特殊的常量,一般稱為符號常量或const變量。const修飾符主要用來定義常量或變量。其定義格式為“const <類型說明符> <常量名> =<常量值>;”,示例如下。
const double PI=3.14159; //定義浮點型的const變量
基本數(shù)據(jù)類型的變量一旦加上const修飾符,程序在編譯時,將其視為一個常量,而不再為其分配內(nèi)存。當在程序中遇到該const變量時,將用其定義時的初值來代替,不能在程序中修改const修飾的變量的值。所以在聲明const變量時,必須對其進行初始化賦值,除非該變量是用extern修飾的全局變量。
在C51程序中使用const變量,具有如下幾點好處。
?可以防止程序運行時該值被意外修改。
?可以方便對于程序中經(jīng)常使用的值進行統(tǒng)一修改,便于調(diào)試程序。
const變量的程序示例如下。
#include <stdio.h> //頭文件 const double PI=3.14159; //定義圓周率為const變量 void main() //主函數(shù) { int r; //定義半徑 double area,length; //定義圓面積和周長 r=2; //半徑賦值 area=r*r*PI; //計算面積 length=2*PI*r; //計算周長 printf("If r=%d,the area=%lf,length=%lf\n",r,area,length); //輸出結(jié)果 }
這段程序可在Keil μ Vision3集成開發(fā)環(huán)境中運行,執(zhí)行結(jié)果如下。
If r=2,the area=12.566360,length=12.566360
該程序中,將圓周率PI定義為double型的const變量。主程序編譯和執(zhí)行時,如果遇到該變量則自動以double型的值3.14159來代替。
在C51語言中,宏定義和const變量有些類似。宏定義在程序預(yù)處理時只對上下文進行簡單的文本代替,并不進行具體的語法檢查,示例如下。
#define ch 12;
對于上面的宏定義語句,C51程序在編譯時,如果遇到字符串ch,則將其全部替換為字符串12。至于ch的數(shù)據(jù)類型則沒有指明,因此在使用時會出現(xiàn)一些問題,例如不知道該變量是整型數(shù)據(jù)還是浮點型數(shù)據(jù),這就很容易引起混亂。如果使用const變量來定義這個常量,可以進行如下定義。
const int ch=12; //定義ch為整型const變量 const double ch=12; //定義ch為浮點型const變量
這樣,在定義時便指明了其數(shù)據(jù)類型。因此,在這種情況下使用const變量要比宏定義簡潔清楚。使用const變量可以完全代替無參數(shù)的宏。
說明
宏定義在后面的章節(jié)中會具體介紹,這里僅指出了其和const變量的區(qū)別。
- Node.js+Webpack開發(fā)實戰(zhàn)
- Cocos2D-X權(quán)威指南(第2版)
- C# 2012程序設(shè)計實踐教程 (清華電腦學(xué)堂)
- Machine Learning with R Cookbook(Second Edition)
- Mastering Ubuntu Server
- Java性能權(quán)威指南(第2版)
- Elasticsearch for Hadoop
- 從零開始學(xué)C語言
- 打開Go語言之門:入門、實戰(zhàn)與進階
- Python 3.7從入門到精通(視頻教學(xué)版)
- Creating Data Stories with Tableau Public
- IoT Projects with Bluetooth Low Energy
- Learning Ionic
- Python期貨量化交易實戰(zhàn)
- Keil Cx51 V7.0單片機高級語言編程與μVision2應(yīng)用實踐