C語言編程0基礎學習歷程(2)—— 常量和變量
目錄
在前面的 Hello World !中的 “Hello World!” 就是一種數據,在C語言中屬於字符串類型。那麼C語言中數據都有哪些類型呢?C語言又是以什麼方式處理數據的呢?
實際上C語言程序處理的數據有變量和常量兩種形式。
一、常量(在程序執行過程中不可以改變的量)
如同人類社會,常量們也有自己的組織與分工。常量按類型可分爲四種:整型常量、實型常量、字符常量、字符串常量。此外,常量還分 有符號整型 和 無符號整型 兩種:
(1)有符號常量 :一個二進制數在存儲單元中,其最高位用來表示數的正負。
(2)無符號常量 :所有二進制位都用來表示數據。(非負數)
1、整型常量(關鍵字:int)
包括數學中的正整數、負整數、0。
常用的整數常量表現形式:
(1)整型常量(int)
(3)長整型(long)
(4)短整型(short)
附:表1
類型 | 取值範圍 |
---|---|
int | -2147483648~2147483648 |
short int | -32768~32767 |
signed int | -2147483648~2147483648 |
unsigned int | 0~4294967295 |
long int | -2147483648~2147483647 |
unsigned long | 0~4294967295 |
表2
類型 | 所佔字節(Turbo C 2.0編譯環境) | 長度(單位:位) |
---|---|---|
char | 1 | 8 |
int | 2 | 16 |
short int | 2 | 16 |
long int | 4 | 32 |
float | 4 | 32 |
double | 8 | 64 |
表3
類型 | 所佔字節(Code::Blocks編譯環境) | 長度(單位:位) |
---|---|---|
char | 1 | 8 |
int | 4 | 32 |
short int | 2 | 16 |
long int | 4 | 32 |
float | 4 | 32 |
double | 8 | 64 |
2、實型常量
表示範圍爲實數範圍,使用浮點數(小數點位置不固定的數)進行表示。
浮點型有兩種表示方式:1、標準小數點表示法(用來表示小數) 2、E表示法(即科學計數法,用來表示非常大和非常小的數)例如 8.33E-4=0.000833。(注:數與E/e之間無空格)
常見表現形式
(1)單精度浮點型
(2)雙精度浮點型
附 表4
類型 | 取值範圍 |
---|---|
float | 3.4e–38~3.4e+38 |
double | 1.7e–308~1.7e+308 |
表5
類型 | 所佔字節 | 長度 |
---|---|---|
float | 4 | 32 |
double | 8 | 64 |
3、字符常量
用一對單引號括起來的任意字符,如:‘n’、‘m’、‘X’、‘0’等。
4、字符串常量
用一對雙引號括起來的零個或多個字符,如:“”、“Hello World!”。
二、變量(其值在運行過程中可以改變的量)
變量們如同人們的公司,公司不能移動,但是公司裏的人卻可以。
定義變量的一般形式:關鍵字 變量名;
1、關鍵字
所謂關鍵字就是C語言預先規定的、具有特殊意義的單詞,它常用於聲明變量的類型。而變量類型又決定了編譯器爲其分配內存單元的字節數、數據在內存單元中的存放形式、該類型變量合法的取值範圍以及該類型變量可參與的運算種類等等。
附 表6
關鍵字 | 說明 |
---|---|
auto | 自動變量 |
break | 跳出當前循環 |
case | 開關語句分支,和switch連用 |
char | 字符型 |
const | 常數 |
continue | 結束當前循環,開始下一輪循環 |
default | 開關語句中的其他分支 |
do | 循環,與while搭配使用 |
double | 雙精度實型 |
else | 條件語句否定分支,與if連用 |
enum | 聲明枚舉類型 |
extern | 外部聲明 |
float | 浮點型 |
for | 循環 |
goto | 無條件跳轉 |
if | 條件 |
int | 整型 |
long | 長整型 |
register | 聲明寄存器變量 |
return | 函數返回語句,可以帶參數,也可以不帶 |
short | 短整型 |
signed | 有符號類型 |
sizeof | 計算數據類型長度 |
static | 聲明靜態 |
struct | 結構體 |
switch | 用於開關語句 |
typedef | 給數據類型起別名(小名) |
union | 聲明共用體變量 |
unsigned | 無符號類型 |
void | 聲明函數無返回值或無參數,聲明無類型指針 |
volatile | 說明變量在程序執行中可以被隱含改變 |
while | 循環條件 |
2、變量名
變量名就是用戶定義的標識符,好比是人的身份證,卻又有些許不同。它用於標識內存中一個具體的儲存單元,其中存放的數據稱爲變量的值(標識符區分大小寫)。
其命名遵循以下原則:
(1)、標識符只能由字母、數字和下劃線組成。
(2)、標識符必須由字母或下劃線開頭。
(3)、不允許用C關鍵字爲標識符命名。
3、變量聲明的意義
世間萬物存在皆有他的道理,變量的聲明也是如此,其存在有以下幾點作用:
(1)建立變量符號表,使編譯器可以在編譯期間發現因疏忽而寫錯的變量名;
(2)變量的數據類型指示系統分配多少內存空間;
(3)變量的數據類型指示系統如何解釋儲存空間中的值;
(4)變量的數據類型確定該變量的取值範圍;
4、變量的聲明與賦初值(實例)
#include <stdio.h>
int main ()
{
int a=1,b=1; //整型聲明與賦值
float c=2,d=2; //單精度浮點型聲明與賦值
double e=3; //雙精度浮點型聲明與賦值
char ch='W'; //字符型聲明與賦值
printf("%d\n",a+b);
printf("%f\n",c+d);
printf("%lf\n",e);
printf("%c\n",ch);
return 0;
}
其中 ‘=’ 爲賦值符號,複製形式也可寫爲 a=b=c 此類的賦值表達式,稱爲多重賦值。在計算不同類型表達式時,要考慮運算符的優先級。
附 表7
優先級 | 運算符 | 含義 | 運算類型 | 結合方向 |
---|---|---|---|---|
1 | ( ) [ ] -> . ++(後綴)、- -(後綴) |
圓括號、函數參數表 數據元素下標 指向結構體成員 引用結構體成員 後綴增一、後綴減一 |
— | 自左向右 |
2 | ! ~ ++(前綴)、- -(前綴) - * & (類型標識符) sizeof |
邏輯非 按位取反 增一、減一 求負 間接尋址符 取地址符 強制類型轉換符 計算字節數運算符 |
單目運算 | 自右向左 |
3 | * / % |
乘法運算 除法運算 整數求餘 |
雙目運算 | 自左向右 |
4 | + - |
加法運算 減法運算 |
雙目運算 | 自左向右 |
5 | <<、>> | 左移、右移 | 位運算 | 自左向右 |
6 | <、<= >、>= |
小於、小於等於 大於、大於等於 |
關係運算 | 自左向右 |
7 | ==、!= | 等於、不等於 | 關係運算 | 自左向右 |
8 | & | 按位與 | 位運算 | 自左向右 |
9 | ^ | 按位異或 | 位運算 | 自左向右 |
10 | | | 按位或 | 位運算 | 自左向右 |
11 | && | 邏輯與 | 邏輯運算 | 自左向右 |
12 | || | 邏輯或 | 邏輯運算 | 自左向右 |
13 | ?: | 條件運算符 | 三目運算符 | 自右向左 |
14 | = +=、-=、*=、/=、%= &=、^=、|=、<<=、>>= |
賦值運算符 複合的賦值運算符 |
雙目運算 | 自右向左 |
15 | , | 逗號運算符 | 順序求值運算 | 自左向右 |