C语言入门(4)——常量、变量与赋值
?
對于基本數據類型量,按其取值是否可改變又分為常量和變量兩種。在程序執行過程中,其值不發生改變的量稱為常量,其值可變的量稱為變量。它們可與數據類型結合起來分類。
?
常量
常量有字符常量(CharacterConstant)、數字常量和枚舉常量。枚舉常量以后再介紹,現在我們看看如何使用字符常量和數字常量:
#include<stdio.h> #include<stdlib.h> int main(void) {printf("character: %c\ninteger:%d\nfloating point: %f\n", 'A', 34, 3.14);system("pause");return 0; }?
字符常量要用單引號括起來,例如上面的'}',注意單引號只能括一個字符而不能像雙引號那樣括一串字符,字符常量也可以是一個轉義序列,例如'\n',這時雖然單引號括了兩個字符,但實際上只表示一個字符。和字符串字面值中使用轉義序列有一點區別,如果在字符常量中要表示雙引號"和問號?,既可以使用轉義序列\"和\?,也可以直接用字符"和?,而要表示'和\則必須使用轉義序列。
計算機中整數和小數的內部表示方式不同,因而在C語言中是兩種不同的類型,例如上例的34和3.14,小數在計算機術語中稱為浮點數(Floating Point)。這個語句的輸出結果和Hello world不太一樣,字符串"character: %c\ninteger: %d\nfloating point: %f\n"并不是按原樣打印輸出的,而是輸出成這樣:
??
符號常量
在C語言中,可以用一個標識符來表示一個常量,稱之為符號常量。符號常量在使用之前必須先定義,其一般形式為:
#define 標識符 常量其中#define是一條預處理命令(預處理命令都以"#"開頭),稱為宏定義命令,其功能是把該標識符定義為其后的常量值。一經定義,以后在程序中所有出現該標識符的地方均代之以該常量值。
?
習慣上符號常量的標識符用大寫字母,變量標識符用小寫字母,以示區別。
符號常量的使用:?
#include<stdio.h> #include<stdlib.h> #define PRICE 30 int main() {int num, total;num= 10;total= num * PRICE;printf("total= %d \n", total);system("pause");return 0; }幾點說明:
用標識符代表一個常量,稱為符號常量。
符號常量與變量不同,它的值在其作用域內不能改變,也不能再被賦值。
使用符號常量的好處是:含義清楚;能做到“一改全改”。
?
變量
?其值可以改變的量稱為變量。變量是計算機存儲器中的一塊命名的空間,可以在里面存儲一個值,存儲的值是可以隨時變的,比如這次存個字符'a'下次存個字符'b',正因為變量的值可以隨時變所以才叫變量。常量有不同的類型,因此變量也有不同的類型,變量的類型也決定了它所占的存儲空間的大小。
變量定義必須放在變量使用之前。一般放在函數體的開頭部分。要區分變量名和變量值是兩個不同的概念。
?變量定義舉例:
?
int num,total; double price = 123.123; char a = 'a', abc;應該給變量起有意義的名字。從這個例子中我們也看到兩個同樣類型的變量可以定義在同一行。需要注意,變量的命名有一定限制,規定必須以字母或下劃線_開頭,后面可以跟若干個字母、數字、下劃線,但不能有其它字符。例如這些是合法的變量名:Abc、__abc__、_123。但這些是不合法的變量名:3abc、ab$。其實這個規則不僅適用于變量名,也適用于所有可以由程序員起名字的語法元素,例如以后要講的函數名、宏定義、結構體成員名等等,在C語言中這些統稱為標識符。
?一般來說應避免使用以下劃線開頭的標識符,以下劃線開頭的標識符只要不和C語言關鍵字沖突的都是合法的,但是往往被編譯器用作一些功能擴展,C語言庫的實現也定義了很多以下劃線開頭的名字,很容易造成名字沖突,所以除非你對編譯器和C語言庫特別清楚,一般應避免使用這種標識符。
?
賦值
?定義了變量之后,我們要把值存到它們的存儲空間里,可以用賦值語句實現:
char firstletter; int hour, minute; firstletter = 'a'; /* 把firstletter賦值 'a' */ hour = 11; /* 給hour賦值 */ minute = 59; /* 給minute 賦值 */注意,變量一定要先定義再使用,編譯器必須先看到你的定義語句,才知道firstletter、hour和minute是變量名,代表一塊存儲空間,下面使用時才知道去哪里找這個變量的存儲空間。還要注意,這里的等號不表示數學里的相等關系,和1+1=2的等號是不同的,這里的等號表示賦值。在數學上不會有i=i+1這種等式成立,而在C語言中,這個語句表示把變量i的存儲空間中的值取出來,再加上1,得到的結果再存回i的存儲空間中。再比如,在數學上a=7和7=a是一樣的,而在C語言中,后者是不合法的。總結一下:定義一個變量,就是分配一塊存儲空間并給它命名;給一個變量賦值,就是把一個值存到了這塊存儲空間中。變量的定義和賦值也可以一步完成,這稱為變量的初始化,例如要達到上面代碼的效果也可以這樣寫:
?
char firstletter = 'a'; int hour = 11, minute = 59;初始化是一種特殊的變量定義語句,而不是一種賦值語句。就目前來看,先定義一個變量再給它賦值和定義這個變量的同時給它初始化所達到的效果是一樣的,事實上C語言的很多語法規則既適用于賦值也適用于初始化,但在以后的學習中你也會了解到它們之間的不同,請在學習過程中注意總結賦值和初始化的相同之處和不同之處。
?你可以用不同形狀的框表示不同類型的變量,這樣可以提醒你給變量賦的值必須符合它的類型。如果所賦的值和變量的類型不符會導致編譯器報警或報錯(這是一種語義錯誤),例如:
?
int hour, minute; hour = "Hello."; /* 錯誤!*/ minute = "59"; /* 錯誤! */注意第3個語句,把"59"賦給minute看起來像是對的,但是類型不對,字符串不能賦給整型變量。既然可以為變量的存儲空間賦值,就應該可以把值取出來用,現在我們取出這些變量的值用printf打印:
printf("Current time is %d:%d",hour, minute);也就是說,變量名除了用在等號左邊表示賦值之外,用在別的地方都表示把它的值取出來替換在那里。在計算機中不同類型的變量所占的存儲空間大小是不同的,變量的最小存儲單位是字節(Byte),在C語言中char型變量的存儲空間是一個字節,其它類型的變量占多少個字節在不同平臺上有不同的規定,以后再詳細討論。
?
轉載于:https://www.cnblogs.com/new0801/p/6177163.html
總結
以上是生活随笔為你收集整理的C语言入门(4)——常量、变量与赋值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经典监督学习方法
- 下一篇: 【问题记录】RIDE-1.7.3.1控制