當前位置:首頁 » 編程語言 » c語言變數定義
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言變數定義

發布時間: 2022-02-01 03:37:15

c語言中,什麼樣的變數定義是合法的

C項是合法的。

在VB6中,變數的命名必須遵循以下規則:

1、變數名必須以字母或下劃線打頭,名字中間只能由字母、數字和下劃線「_」組成;最後一個字元可以是類型說明符;

2、變數名的長度不得超過255個字元;

3、變數名在有效的范圍內必須是唯一的。

4、變數名不能是VB中的保留字(關鍵字),也不能是末尾帶類型說明符的保留字,但可以把保留字嵌入變數名,關鍵字是指VB6語言中的屬性,事件,方法,過程,函數等系統內部的標識符。

(1)c語言變數定義擴展閱讀:

1、變數名在VB中是不區分大小寫的(如ABC、aBc、abc等都是一樣的)。C語言中區分大小寫。不同的語言有不同的規則。

2、定義和使用變數時,通常要把變數名定義為容易使用閱讀和能夠描述所含數據用處的名稱,而不要使用一些難懂的縮寫如A或B2等。

3、根據需要混合使用大小寫字母和數字。一個合理協議是,變數中每個單詞的第一個字母大寫。

4、另一個合理協議是,每個變數名以兩個或三個字元縮寫開始,這些字元縮寫對應於變數要存儲數據的數據類型。

參考資料:網路-變數

② C語言 變數定義的位置

把floar改為float之後本人使用VS2005調試沒有任何問題,先輸入一個數,回車再輸入一個數,最後正確輸出結果。
你可以把scanf("%f%f",&r,&h);改一下scanf("%f,%f",&r,&h);在%f之間加個逗號,輸入的時候在兩個數之間加個逗號,也就是1,2.0這樣,然後再試試。如果還是不行,就可能是你的編譯器有問題,有可能是所謂的第一個輸入語句不能在printf之後的毛病吧。

③ C語言中怎麼定義常變數

據我的經驗,在C中有三種定義常量的方法:
第一種, 使用#define 宏定義,比如說你想定義一個值為10的常量,那麼:
#define value 10
value就是一個值為10的宏,以後只要遇到value 系統就將value 替換為10,注意宏定義後面不能有分號。
第二種,採用const 關鍵字 把一個變數聲明轉換為常量聲明。即:
const int value = 10;
value 是一個只讀值,你不能再修改value的值。

第三種方法,採用枚舉變數的功能,你聲明一個枚舉變數
enum name { x =1,y=2,z=3};
其中的x,y,z就是個常量了,當然裡面的值等於多少是你自己確定的,如果不顯示聲明,就是默認從0開始的。

希望對你有幫助!

④ c語言位變數定義

在c語言中定義bit型變數,可以使用位域來自定義。
位域的定義和位域變數的說明位域定義與結構定義相仿,其形式為:
struct 位域結構名
{ 位域列表 };
其中位域列表的形式為: 類型說明符 位域名:位域長度;
示例:通過位域來計算IEEE754浮點數標准中,單精度浮點數的最大值、最小值以及最小弱規范數。
#include <stdio.h>
typedef struct FP_SINGLE
{
unsigned __int32 fraction : 23;
unsigned __int32 exp : 8;
unsigned __int32 sign : 1;
} fp_single;
int main()
{
float x;
fp_single * fp_s = (fp_single *)&x;
fp_s->sign = 0;
fp_s->exp = 0xfe;
fp_s->fraction = 0x7fffff;
printf ("float 最大數: %le\n",(double)x);
fp_s->sign = 0;
fp_s->exp = 0x1;
fp_s->fraction = 0x0;
printf ("float 最小數: %le\n",(double)x);
fp_s->sign = 0;
fp_s->exp = 0;
fp_s->fraction = 0x1;
printf ("float 最小弱規范數:%le\n\n",(double)x);
return 0;
}

⑤ C語言函數變數定義

#include<stdio.h>
void pre();
int input(int i);
void output(int i);
void adverstisement();
int main()
{
int i;
i=1;
while(1)
{
pre();
i=input( i);
output(i);
adverstisement();
}
return 0;
}
void pre()
{
printf("******************************/n歡迎使用小區自動售貨系統/n1.可口可樂/n2.鮮橙多/n3.百威啤酒******************************");
}
int input(int i)
{
printf("請選擇你所需要的商品");
scanf("%d",&i);
return i;
}
void output(int i)
{
switch(i)
{
case 1:
printf("請確認,你需要的是可樂/n請投幣3元");
break;
case 2:
printf("請確認,你需要的是橙汁/n請投幣4元");
break;
case 3: printf("請確認,你需要的是百威啤酒/n請投幣5元");
break;
default: { printf("輸入錯誤");
}
}
}
void adverstisement()
{
printf("節操冰棒即將上市,僅售0.5元");
getchar();
}

⑥ c語言中變數定義是什麼

變數來源於數學,是計算機語言中能儲存計算結果或能表示值抽象概念。變數可以通過變數名訪問。在指令式語言中,變數通常是可變的;但在純函數式語言(如Haskell)中,變數可能是不可變(immutable)的。
在一些語言中,變數可能被明確為是能表示可變狀態、具有存儲空間的抽象(如在Java和Visual Basic中);但另外一些語言可能使用其它概念(如C的對象)來指稱這種抽象,而不嚴格地定義"變數"的准確外延。

⑦ c語言,變數的定義和使用

變數的聲明有兩種情況:
1、一種是需要建立存儲空間的。例如:int a 在聲明的時候就已經建立了存儲空間。
2、另一種是不需要建立存儲空間的。 例如:extern int a 其中變數a是在別的文件中定義的。
前者是「定義性聲明(defining declaration)」或者稱為「定義(definition)」,而後者是「引用性聲明(referncing declaration)」,從廣義的角度來講聲明中包含著定義,即定義是聲明的一個特例,所以並非所有的聲明都是定義,例如:int a 它既是聲明,同時又是定義。然而對於 extern a 來講它只是聲明不是定義。一般的情況下我們常常這樣敘述,把建立空間的聲明稱之為「定義」,而把不需要建立存儲空間的聲明稱之為「聲明」。很明顯我們在這里指的聲明是范圍比較窄的,即狹義上的聲明,也就是說非定義性質的聲明,例如:在主函數中:
int main() {
extern int A;
//這是個聲明而不是定義,聲明A是一個已經定義了的外部變數
//注意:聲明外部變數時可以把變數類型去掉如:extern A;
dosth(); //執行函數
}
int A; //是定義,定義了A為整型的外部變數

外部變數的「定義」與外部變數的「聲明」是不相同的,外部變數的定義只能有一次,它的位置是在所有函數之外,而同一個文件中的外部變數聲明可以是多次的,它可以在函數之內(哪個函數要用就在那個函數中聲明)也可以在函數之外(在外部變數的定義點之前)。系統會根據外部變數的定義(而不是根據外部變數的聲明)分配存儲空間的。對於外部變數來講,初始化只能是在「定義」中進行,而不是在「聲明」中。所謂的「聲明」,其作用,是聲明該變數是一個已在後面定義過的外部變數,僅僅是為了「提前」引用該變數而作的「聲明」而已。extern 只作聲明,不作任何定義。
(我們聲明的最終目的是為了提前使用,即在定義之前使用,如果不需要提前使用就沒有單獨聲明的必要,變數是如此,函數也是如此,所以聲明不會分配存儲空間,只有定義時才會分配存儲空間。)
用static來聲明一個變數的作用有二:
(1)對於局部變數用static聲明,則是為該變數分配的空間在整個程序的執行期內都始終存在。
(2)外部變數用static來聲明,則該變數的作用只限於本文件模塊。

⑧ c語言中怎樣定義變數的語言

1、記住一條就夠了:在函數之外定義的變數就是全局變數。用static修飾的變數可以是全局的,也可以是局部的,所以說「用static修飾的變數是全局變數」是錯誤的。用static修飾的變數的生命周期與全局變數一樣,但可見性仍分全局和局部。
2、全局變數在整個c文件中都能使用,而局部變數在其作用域內才能使用,舉個例子:

1
2
3
4
5
6
7
8
9
10
11

int f = 7;// 這個是全局變數
int myadd(int a, int b)
{
int c = a + b;// c是局部變數,只能在myadd中使用
return c;
}
int main(void)
{
printf("%d\n", c);// 因為c是myadd中定義的局部變數,這里會報錯。
printf("%d\n", f);// f是全局變數,這句是正確的。
}

⑨ c語言的變數定義

C語言中變數遵循「先定義後使用」的原則:

1、定義變數的格式:數據類型 變數名;

首先要強調的一點是:變數的定義是一條語句,每條語句都是以分號結尾的。故定義完變數,後面不要漏掉「;」分號。

在變數定義中,「數據類型」表示想要存儲什麼類型的數據就定義什麼類型的變數。

如想要存儲整數就定義成 int 型;想要存儲小數就定義成 float 型或 double 型;想要存儲字元就定義成 char 型等等。

「變數名」就是你想給這個變數起個什麼名字,通常都是用字母、數字與下劃線組合而成。比如:

「int i;double price;double goods_price2」等等。

就表示定義了一個整型變數 i、小數型變數price、goods_price2;

2、變數定義完成後,接下來就是使用變數,為變數賦值。

將一個值放到一個變數中,這個動作叫「賦值」。通俗點講,「給變數賦值」意思就是將一個值傳給一個變數。

賦值的格式是:

變數名 = 要賦的值;

它的意思是將=右邊的數字賦給左邊的變數。比如:
i = 3;
這就表示將 3 賦給了變數 i,此時 i 就等於 3 了。

3、變數的定義和賦值,可以分成兩步寫,也可以將它們合成一步,而且事實上,在實際編程中用得最多的也是合二為一的寫法。

形式如下:

數據類型 變數名 = 要賦的值;

比如:int i = 3;

就表示定義了一個變數 i,並把 3 賦給這個變數。它與

int i;
i =3;

是等價的。

在定義變數時也可以一次性定義多個變數,比如:

int i, j;

這就表示定義了變數 i 和 j。這里需要強調的是,當同時定義多個變數時,變數之間是用逗號隔開的,千萬別寫成分號。這是很多新手最容易犯的錯誤,即將逗號和分號記混了。

同樣也可以在定義多個變數的同時給它們賦值:

int i = 3, j = 4;

中間還是用逗號隔開,最後別忘記輸入分號。

最後需要注意的是,在較老的 C89/C90 標准(也稱 ANSI C 標准)中,變數只能在程序的開頭定義,或者說變數定義的前面不能有其他非聲明或非定義的語句。

(9)c語言變數定義擴展閱讀:

在主回答中,提到了變數定義時,變數名通常都是用字母、數字與下劃線組合而成,但是實際上,變數名也不是隨便組合的,變數定義需要遵循一定的規范,否則容易產生歧義,影響整體程序代碼 的可讀性。

所以在定義變數的時候,要注意以下命名規范:

(1)、變數名的開頭必須是字母或下劃線,不能是數字。實際編程中最常用的是以字母開頭,而以下劃線開頭的變數名是系統專用的。命名應當直觀且可以拼讀,可望文知意,便於記憶和閱讀。

標識符最好採用英文單詞或其組合,不允許使用拼音。程序中的英文單詞一般不要太復雜,用詞應當准確。

(2)、變數名中的字母是區分大小寫的。比如 a 和 A 是不同的變數名,num 和 Num 也是不同的變數名。當標識符由多個片語成時,每個詞的第一個字母大寫,其餘全部小寫。

比如: int CurrentVal;

這樣的名字看起來比較清晰,遠比一長串字元好得多。

(3)、變數名絕對不可以是C語言關鍵字,不能有空格。

(4)、變數名的長度應當符合「min-length && max-information」原則。

C 是一種簡潔的語言, 命名也應該是簡潔的。例如變數名MaxVal 就比MaxValueUntilOverflow 好用。標識符的長度一般不要過長,較長的單詞可通過去掉「母音」形成縮寫。

另外,英文詞盡量不縮寫,特別是非常用專業名詞,如果有縮寫,在同一系統中對同一單詞必須使用相同的表示法,並且註明其意思。

⑩ c語言有哪幾種變數如何定義這些變數舉例說明

基本的數據類型有:整形、實型、字元型、指針型等
擴展的數據類型有:數組,結構體,聯合、共用體等
還可以有自定義的類型。

以下是基本類型的詳細的說明
最好找本C語言的書看看,紙介質版的或電子版的都行,建議看譚誥強的c程序設計,最新的是第三版,本人學習時是二版

整型量

整型量包括整型常量、整型變數。整型常量就是整常數。在C語言中,使用的整常數有八進制、十六進制和十進制三種。

整型常量

1.八進制整常數八進制整常數必須以0開頭,即以0作為八進制數的前綴。數碼取值為0~7。八進制數通常是無符號數。
以下各數是合法的八進制數:
015(十進制為13) 0101(十進制為65) 0177777(十進制為65535)
以下各數不是合法的八進制數:
256(無前綴0) 03A2(包含了非八進制數碼) -0127(出現了負號)

2.十六進制整常數
十六進制整常數的前綴為0X或0x。其數碼取值為0~9,A~F或a~f。
以下各數是合法的十六進制整常數:
0X2A(十進制為42) 0XA0 (十進制為160) 0XFFFF (十進制為65535)
以下各數不是合法的十六進制整常數:
5A (無前綴0X) 0X3H (含有非十六進制數碼)

3.十進制整常數
十進制整常數沒有前綴。其數碼為0~9。
以下各數是合法的十進制整常數:
237 -568 65535 1627
以下各數不是合法的十進制整常數:
023 (不能有前導0) 23D (含有非十進制數碼)

在程序中是根據前綴來區分各種進制數的。因此在書寫常數時不要把前綴弄錯造成結果不正確。4.整型常數的後綴在16位字長的機器上,基本整型的長度也為16位,因此表示的數的范圍也是有限定的。十進制無符號整常數的范圍為0~65535,有符號數為-32768~+32767。八進制無符號數的表示範圍為0~0177777。十六進制無符號數的表示範圍為0X0~0XFFFF或0x0~0xFFFF。如果使用的數超過了上述范圍,就必須用長整型數來表示。長整型數是用後綴「L」或「l」來表示的。例如:
十進制長整常數 158L (十進制為158) 358000L (十進制為-358000)
八進制長整常數 012L (十進制為10) 077L (十進制為63) 0200000L (十進制為65536)
十六進制長整常數 0X15L (十進制為21) 0XA5L (十進制為165) 0X10000L (十進制為65536)

長整數158L和基本整常數158 在數值上並無區別。但對158L,因為是長整型量,C編譯系統將為它分配4個位元組存儲空間。而對158,因為是基本整型,只分配2 個位元組的存儲空間。因此在運算和輸出格式上要予以注意,避免出錯。無符號數也可用後綴表示,整型常數的無符號數的後綴為「U」或「u」。例如: 358u,0x38Au,235Lu 均為無符號數。前綴,後綴可同時使用以表示各種類型的數。如0XA5Lu表示十六進制無符號長整數A5,其十進制為165。

整型變數

整型變數可分為以下幾類:
1.基本型
類型說明符為int,在內存中佔2個位元組,其取值為基本整常數。
2.短整量
類型說明符為short int或short'C110F1。所佔位元組和取值范圍均與基本型相同。
3.長整型
類型說明符為long int或long ,在內存中佔4個位元組,其取值為長整常數。
4.無符號型
類型說明符為unsigned。
無符號型又可與上述三種類型匹配而構成:
(1)無符號基本型 類型說明符為unsigned int或unsigned。
(2)無符號短整型 類型說明符為unsigned short
(3)無符號長整型 類型說明符為unsigned long
各種無符號類型量所佔的內存空間位元組數與相應的有符號類型量相同。但由於省去了符號位,故不能表示負數。 下表列出了Turbo C中各類整型量所分配的內存位元組數及數的表示範圍。
類型說明符 數的范圍 分配位元組數
int -32768~32767 ■■
short int -32768~32767 ■■
signed int -32768~32767 ■■
unsigned int 0~65535 ■■
long int -2147483648~2147483647 ■■■■
unsigned long 0~4294967295 ■■■■
整型變數的說明
變數說明的一般形式為: 類型說明符 變數名標識符,變數名標識符,...; 例如:
int a,b,c; (a,b,c為整型變數)
long x,y; (x,y為長整型變數)
unsigned p,q; (p,q為無符號整型變數)

在書寫變數說明時,應注意以下幾點:
1.允許在一個類型說明符後,說明多個相同類型的變數。各變數名之間用逗號間隔。類型說明符與變數名之間至少用一個空格間隔。
2.最後一個變數名之後必須以「;」號結尾。
3.變數說明必須放在變數使用之前。一般放在函數體的開頭部分。
[Practice] //1int a,b;
short int c;
short d=100;
a=d-20;
b=a+d;
c=a+b+d;
d=d-a+c-b;'Vtable
a,2,0
b,2,0
c,2,0
d,2,100
of Vtable
'Vupdate
1,0;2,0
3,0
4,100
1,80
2,180
3,360
4,200
of Vupdate
of Practice
[Practice] //2int a=5;
int b=9;
long int c;
long d;
c=a+b-7;
d=a*b*c;
c=d*d*d;
a=c-d;'Vtable
a,2,5
b,2,9
c,4,0
d,4,0
of Vtable
'Vupdate
1,5
2,9
3,0
4,0
3,7
4,315
3,31255875
1,-5112
of Vupdate
of Practice
[Practice] //3int a=6,b=19;
unsigned int c;
int d;
c=a-b+7;
d=b*c;
a=b+c+d;
b=-a;'Vtable
a,2,6
b,2,19
c,2,0
d,2,0
of Vtable
'Vupdate
1,6;2,19
3,0
4,0
3,65530
4,-114
1,-101
2,101
of Vupdate
of Practice
void main(){
long x,y;
int a,b,c,d;
x=5;
y=6;
a=7;
b=8;
c=x+a;
d=y+b;
printf("c=x+a=%d,d=y+b=%d\n",c,d);
}
將main說明為返回void,即不返回任何類型的值
x,y被定義為long型
a,b,c,d被定義為int型
5->x
6->y
7->a
8->b
x+a->c
y+b->d
顯示程序運行結果 of long x,y;
int a,b,c,d;
c=x+a;
d=y+b;
從程序中可以看到:x, y是長整型變數,a, b是基本整型變數。它們之間允許進行運算,運算結果為長整型。但c,d被定義為基本整型,因此最後結果為基本整型。本例說明,不同類型的量可以參與運算並相互賦值。其中的類型轉換是由編譯系統自動完成的。有關類型轉換的規則將在以後介紹。

實型量

實型常量

實型也稱為浮點型。實型常量也稱為實數或者浮點數。在C語言中,實數只採用十進制。它有二種形式: 十進制數形式指數形式
1.十進制數形式
由數碼0~ 9和小數點組成。例如:0.0,.25,5.789,0.13,5.0,300.,-267.8230等均為合法的實數。
2.指數形式
由十進制數,加階碼標志「e」或「E」以及階碼(只能為整數,可以帶符號)組成。其一般形式為a E n (a為十進制數,n為十進制整數)其值為 a*10,n 如: 2.1E5 (等於2.1*10,5), 3.7E-2 (等於3.7*10,)-2*) 0.5E7 (等於0.5*10,7), -2.8E-2 (等於-2.8*10,)-2*)以下不是合法的實數 345 (無小數點) E7 (階碼標志E之前無數字) -5 (無階碼標志) 53.-E3 (負號位置不對) 2.7E (無階碼)
標准C允許浮點數使用後綴。後綴為「f」或「F」即表示該數為浮點數。如356f和356.是等價的。例2.2說明了這種情況:
void main()
{
printf("%f\n%f\n",356.,356f);
}
void 指明main不返回任何值 利用printf顯示結果 結束

實型變數

實型變數分為兩類:單精度型和雙精度型,
其類型說明符為float 單精度說明符,double 雙精度說明符。在Turbo C中單精度型佔4個位元組(32位)內存空間,其數值范圍為3.4E-38~3.4E+38,只能提供七位有效數字。雙精度型佔8 個位元組(64位)內存空間,其數值范圍為1.7E-308~1.7E+308,可提供16位有效數字。
實型變數說明的格式和書寫規則與整型相同。
例如: float x,y; (x,y為單精度實型量)
double a,b,c; (a,b,c為雙精度實型量)
實型常數不分單、雙精度,都按雙精度double型處理。
void main()
{
float a;
double b;
a=33333.33333;
b=33333.33333333333333;
printf("%f\n%f\n",a,b);
}
此程序說明float、double的不同
a ■■■■
b ■■■■■■■■
a<---33333.33333
b<---33333.33333333333;;
顯示程序結果
此程序說明float、double的不同
float a;
double b;
a=33333.33333;
b=33333.33333333333333; 從本例可以看出,由於a 是單精度浮點型,有效位數只有七位。而整數已佔五位,故小數二位後之後均為無效數字。b 是雙精度型,有效位為十六位。但Turbo C 規定小數後最多保留六位,其餘部分四捨五入。
[Practice] //floatint a=32;
float b;
double d;
b=12345678;
d=b*100;
d=d+a;
d=d+58.123456;'Vtable
a,2,32
b,4,0.0
d,8,0.0
of Vtable
'Vupdate
1,32
2,0
3,0
2,12345678.00000
3,1234567800
3,1234567832
3,1234567890.123456
of Vupdate
of Practice
[Practice] //1int a=543;
float b;
b=123.123962+a;
b=b-100;
a=b;'Vtable
a,2,543
b,4,0.0
of Vtable
'Vupdate
1,543
2,0.0
2,123.123962
2,23.123962
1,23
of Vupdate
of Practice

字元型量

字元型量包括字元常量和字元變數。

字元常量
字元常量是用單引號括起來的一個字元。例如'a','b','=','+','?'都是合法字元常量。在C語言中,字元常量有以下特點:
1.字元常量只能用單引號括起來,不能用雙引號或其它括弧。
2.字元常量只能是單個字元,不能是字元串。
3.字元可以是字元集中任意字元。但數字被定義為字元型之後就
不能參與數值運算。如'5'和5 是不同的。'5'是字元常量,不能參與運算。

轉義字元
轉義字元是一種特殊的字元常量。轉義字元以反斜線"\"開頭,後跟一個或幾個字元。轉義字元具有特定的含義,不同於字元原有的意義,故稱「轉義」字元。例如,在前面各例題printf函數的格式串中用到的「\n」就是一個轉義字元,其意義是「回車換行」。轉義字元主要用來表示那些用一般字元不便於表示的控制代碼。
常用的轉義字元及其含義
轉義字元 轉義字元的意義
\n 回車換行
\t 橫向跳到下一製表位置
\v 豎向跳格
\b 退格
\r 回車
\f 走紙換頁
\\ 反斜線符"\"
\' 單引號符
\a 鳴鈴
\ddd 1~3位八進制數所代表的字元
\xhh 1~2位十六進制數所代表的字元
廣義地講,C語言字元集中的任何一個字元均可用轉義字元來表示。表2.2中的\ddd和\xhh正是為此而提出的。ddd和hh分別為八進制和十六進制的ASCII代碼。如\101表示字?quot;A" ,\102表示字母"B",\134表示反斜線,\XOA表示換行等。轉義字元的使用
void main()
{
int a,b,c;
a=5; b=6; c=7;
printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c);
}
此程序練習轉義字元的使用
a、b、c為整數 5->a,6->b,7->c
調用printf顯示程序運行結果
printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c);
程序在第一列輸出a值5之後就是「\n」,故回車換行;接著又是「\t」,於是跳到下一製表位置(設製表位置間隔為8),再輸出b值6;空二格再輸出c 值7後又是"\n",因此再回車換行;再空二格之後又輸出a值5;再空三格又輸出b的值6;再次後"\t"跳到下一製表位置(與上一行的6 對齊),但下一轉義字元「\b」又使退回一格,故緊挨著6再輸出c值7。

字元變數
字元變數的取值是字元常量,即單個字元。字元變數的類型說明符是char。字元變數類型說明的格式和書寫規則都與整型變數相同。
例如:
char a,b; 每個字元變數被分配一個位元組的內存空間,因此只能存放一個字元。字元值是以ASCII碼的形式存放在變數的內存單元之中的。如x的
十進制ASCII碼是120,y的十進制ASCII碼是121。對字元變數a,b賦予'x'和'y'值: a='x';b='y';實際上是在a,b兩個單元內存放120和121的二進制代碼: a 0 1 1 1 1 0 0 0
b 0 1 1 1 1 0 0 1
所以也可以把它們看成是整型量。 C語言允許對整型變數賦以字元值,也允許對字元變數賦以整型值。在輸出時, 允許把字元變數按整型量輸出,也允許把整型量按字元量輸出。 整型量為二位元組量,字元量為單位元組量,當整型量按字元型量處理時, 只有低八位位元組參與處理。
main()
{
char a,b;
a=120;
b=121;
printf("%c,%c\n%d,%d\n",a,b,a,b);
}
a ■ b ■
a <-- 120
b <--- 121
顯示程序結果

本程序中說明a,b為字元型,但在賦值語句中賦以整型值。從結果看,a,b值的輸出形式取決於printf函數格式串中的格式符,當格式符為"c"時,對應輸出的變數值為字元,當格式符為"d"時,對應輸出的變數值為整數。
void main()
{
char a,b;
a='x';
b='y';
a=a-32;
b=b-32;
printf("%c,%c\n%d,%d\n",a,b,a,b);
}
a,b被說明為字元變數並賦予字元值
把小寫字母換成大寫字母
以整型和字元型輸出
本例中,a,b被說明為字元變數並賦予字元值,C語言允許字元變數參與數值運算,即用字元的ASCII 碼參與運算。由於大小寫字母的ASCII 碼相差32,因此運算後把小寫字母換成大寫字母。然後分別以整型和字元型輸出。
[Practice] //charint a=49;
char b;
char d;
b=a+10;
d=a+b;'Vtable
a,2,49
b,1,隨機
d,1,隨機
of Vtable
'Vupdate
1,49
2,隨機
3,隨機
2,';'
3,'l'
of Vupdate
of Practice
[Practice] //char c1,c2;
c1='a';c2='b';
c1=c1-32;c2=c2-32;'Vtable
c1,1,隨機
c2,1,隨機
of Vtable
'Vupdate
1,隨機;2,隨機
1,'a';2,'b'
1,'A';2,'B'
of Vupdate
of Practice

字元串常量
字元串常量是由一對雙引號括起的字元序列。例如: "CHINA" ,"C program:" , "$12.5" 等都是合法的字元串常量。字元串常量和字元常量是不同的量。它們之間主要有以下區別:
1.字元常量由單引號括起來,字元串常量由雙引號括起來。
2.字元常量只能是單個字元,字元串常量則可以含一個或多個字元。
3.可以把一個字元常量賦予一個字元變數,但不能把一個字元串常量賦予一個字元變數。在C語言中沒有相應的字元串變數。
這是與BASIC 語言不同的。但是可以用一個字元數組來存放一個字元串常量。在數組一章內予以介紹。
4.字元常量佔一個位元組的內存空間。字元串常量占的內存位元組數等於字元串中位元組數加1。增加的一個位元組中存放字元"\0"(ASCII碼為0)。這是字元串結束的標志。例如,字元串 "C program"在內存中所佔的位元組為:C program\0。字元常量'a'和字元串常量"a"雖然都只有一個字元,但在內存中的情況是不同的。
'a'在內存中佔一個位元組,可表示為:a
"a"在內存中佔二個位元組,可表示為:a\0符號常量

符號常量
在C語言中,可以用一個標識符來表示一個常量,稱之為符號常量。符號常量在使用之前必須先定義,其一般形式為:
#define 標識符 常量
其中#define也是一條預處理命令(預處理命令都?quot;#"開頭),稱為宏定義命令(在第九章預處理程序中將進一步介紹),其功能是把該標識符定義為其後的常量值。一經定義,以後在程序中所有出現該標識符的地方均代之以該常量值。習慣上符號常量的標識符用大寫字母,變數標識符用小寫字母,以示區別。
#define PI 3.14159
void main()
{
float s,r;
r=5;
s=PI*r*r;
printf("s=%f\n",s);
}
由宏定義命令定義PI 為3.14159 s,r定義為實數 5->r PI*r*r->s
顯示程序結果 float s,r; r=5; s=PI*r*r; 本程序在主函數之前由宏定義命令定義PI 為3.14159,在程序中即以該值代替PI 。s=PI*r*r等效於s=3.14159*r*r。應該注意的是,符號常量不是變數,它所代表的值在整個作用域內不能再改變。也就是說,在程序中,不能再用賦值語句對它重新賦值。