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

定義變數的類型c語言

發布時間: 2022-12-26 20:06:52

A. c語言中定義數據變數時,數據類型如何確定(int float double等等)

int為整數型,用於定義整數類型的數據
float為單精度浮點型,能准確到小數點後六位
double為雙精度浮點型,能准確到小數點都十二位
char為字元型,用於定義字元類型的數據

B. C語言變數定義char、int、long有什麼區別

1、char 在所有機器上都是佔一個位元組,有符號數范圍是-128到127,一般用來表示字元。字元在存儲中就是存儲的ascii值。

2、int 在16位機上佔2位元組,現在基本沒有了。 在32|64位機上佔四位元組,有符號數范圍是-2^31到2^31-1。

3、long 在32位編譯系統下佔4位元組,與int相同。在64位系統下佔8位元組,可表示的數據范圍是-2^63到2^63-1。

拓展資料:

C語言

是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

語言標准

起初,C語言沒有官方標准。1978年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。布萊恩·柯林漢(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本書,名叫《The C Programming Language》。這本書被 C語言開發者們稱為K&R,很多年來被當作 C語言的非正式的標准說明。人們稱這個版本的 C語言為K&R C。

特點

1、C語言是一個有結構化程序設計、具有變數作用域(variable scope)以及遞歸功能的過程式語言。

2、C語言傳遞參數均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。

3、不同的變數類型可以用結構體(struct)組合在一起。

4、只有32個保留字(reserved keywords),使變數、函數命名有更多彈性。

5、部份的變數類型可以轉換,例如整型和字元型變數。

6、通過指針(pointer),C語言可以容易的對存儲器進行低級控制。

7、預編譯處理(preprocessor)讓C語言的編譯更具有彈性。

C. C語言變數定義

這個表示的是位域,表示變數所佔得位數位結構是c51語言中的一種特殊結構,可以用於訪問一個位元組或字的多個位。位結構一般形式如下。
struct
位結構名
{
數據類型
變數名:
整形常數;
數據類型
變數名:
整形常數;
}位結構變數;
其中,struct為關鍵字,位結構數據類型必須是整型int(unsigned或signed);整形常熟必須是非負的整數,范圍是0~15,用於表示有多少位,即表示二進制位的個數,變數名是可選項,可以省略。位結構的定義,實例如下。
struct
{
unsigned
lbit
:
8;
//lbit
佔用低位元組0~7共八位。
unsigned
hbit0
:
4;
//hbit0
佔用高位元組0~3共4位。
unsigned
hbit1
:
3;
//hbit1
佔用高位元組4~6共3位。
unsigned
hbit2
:
1;
//hbit2
佔用高位元組第7位。
}bit;
位結構成員的訪問與結構成員的訪問相同,例如訪問上列位結構中的lbit成員可寫成如下形式
bit.lbit
在使用位結構時,應注意以下幾點。
1、位結構中的成員必須是int,但可以定義為unsigned或者signed。
2、當位結構成員長度為1時,c51語言將其認為是unsigned類型。
3、位結構總長度(位數)是各個位成員定義的位數之和,可以超過兩個位元組。
4、位結構中的成員不能使用數組和指針,但位結構變數可以是數組和指針。如果是指針,其成員訪問方式同結構指針。
5、位結構可以成為嵌套式結構的成員,與其他結構成員一起使用,示例如下。
struct
student
{
char
*name;
int
num;
int
age;
char
*sex;
float
score;
unsigned
reister:1;
unsigned
pay:1;
};

D. 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。應該注意的是,符號常量不是變數,它所代表的值在整個作用域內不能再改變。也就是說,在程序中,不能再用賦值語句對它重新賦值。

E. C語言中定義變數的數據類型(比如:int,char)有什麼區別

1: 一個 int 型變數佔用兩個位元組內存,也就是16bit;
一個 char 型變數佔用一個位元組內存,也就是8bit;
如果的聲明變數時沒有在「int」或「char」前加存儲類型說明符,則編譯器就會將變數默認為auto變數,這種變數會被放在運行內存里,至於怎麼放這就是C編譯器決定的,而且各個公司出的C編譯器的處理規則是會有一些不一樣的。
2:
變數類型不同對源程序文件大小沒什麼影響,但會對程序運行有影響;如果在8位單片機上,則int類型的數據處理速度會慢很多;如果你要存入的數會大於255,則使用 char 型就會發生溢出,使程序運行發生錯誤;

具體用哪一種,主要還是看你要存入的什麼類型的數據。

F. C語言中定義結構體類型變數的方法

1.結構體類型數據的定義方法和引用方法
定義結構體:struct
結構體名
{
成員列表
};
定義結構體類型的變數:有三種形式

定義類型時定義變數:struct
結構體類型名
{
成員列表
}變數名列表;

直接定義結構類型變數:struct
{
成員列表
}變數名列表;

由已定義的結構體類型來定義變數:struct
結構體類型名變數名列表;
引用結構體類型變數:在定義了結構體類型變數後,採用下列方法引用結構體類型的
變數:
結構體變數名.成員名
這里"."是成員(分量)運算符,它在所有的運算符中優先順序最高。
使用結構體時注意:
(1)結構體類型和結構體類型變數是不同的概念,定義結構體類型變數時應先定義
結構體類型,然後再定義變數屬於該類型。
(2)定義了—個結構體類型後,系統並沒有為所定義的各成員項分配相應的存儲空
間。只有定義了一個結構體類型變數,系統才為所定義的變數分配相應的存儲空間。結構
體類型變數佔用內存的位元組數是所有成員佔用內存長度之和。
(3)結構體成員的引用。如果一個結構體中又嵌套一個結構體,則要訪問一個成員
時,應採取外層向內層逐級訪問的方法。
求採納為滿意回答。

G. c語言有哪幾種變數如何定義這些變數

C語言中的變數有基本變數如int,double,char,float,unsigned int,unsigned char 等等,當然也有結構體變數,指針變數等等。
定義變數如下: int a;就定義了一個int型變數a;
double a;定義了一個double型變數a;

H. C語言變數的定義與使用

變數的存儲類別決定了變數中的數據在計算機內存中的存儲位置。C語言中局部變數存放在動態存儲區,全局變數或者靜態變數存放在靜態存儲區。下面是關於C語言變數的定義與使用,歡迎參考!

如果要為單片機控制系統編寫出高質量的C語言程序,合理的定義並使用變數是非常重要的。程序是用來處理數據的,而變數就是用來存儲數據的。每定義一個變數,編譯器就會在系統的RAM中分配一個物理存儲區域。在單片機控制系統中,RAM資源是非常有限的,作為單片機程序員,絕對不能隨意的定義變數,需要精打細算合理定義。為了實現這個目標,必須要對變數的多個特性有深刻的認識。

變數特性:

第一、變數定義要選擇恰到好處的類型,變數的類型直接決定了它所存儲的數據取值范圍,這類似於我們生活中使用的各種容器,選擇合適的變數類型,不但能保證數據存儲安全,還能有效的節約系統資源;

第二、變數的作用范圍必須清楚,C語言最基本的功能單元是函數,在函數內部使用的變數是私有變數,只能在函數內部使用。多個函數組成一個程序的功能模塊,並安置在某一個C文件中,在這些函數的頭部定義的變數是靜態變數(局部變數),這種類型的變數模塊內部的函數都可以訪問。如果在模塊內部聲明變數,並在該模塊的頭文件中導出,該類型變數就是全局變數,全局變數在整個工程中的所有函數都可以訪問;

第三、變數佔用的RAM資源,私有變數是可以釋放的,靜態變數與全局變數是不可以釋放的。也就是說在程序運行的整個過程中,私有變數佔用資源可以供不同的函數重復利用,而靜態變數與全局變數是完全被佔用不能重復利用的;

第四、變數可以存放常數,但因為單片機RAM資源有限,強烈建議不要用變數存放常量,而是在資源相對豐富的FlashROM中存放常量;

第五、局部變數與全局變數對於函數來說,訪問非常方便,但缺點顯而易見:訪問的函數越多,數據的安全性越低,一旦出現數據異常,很難排除問題。所以,請盡量減少局部變數與全局變數的使用;

第六、函數的型參個數盡量減少,這樣型參只會佔用通用寄存器組來完成參數傳遞工作。如果參數過多,編譯器可能會被迫分配佔用RAM資源,這樣不但參數傳遞效率變低,同時還會導致RAM資源浪費;

明確上述變數定義與使用特點後,在編寫程序的時候,一定要利用好這些特性並結合程序的特點,靈活的使用各種類型、各種作用范圍的變數,使程序在最大限度上得到優化,使系統性能提升至最優的狀態,才是我們嵌入式開發者的終極目標!

拓展:C語言入門學習

什麼人需要學習C語言?

從51JOB的統計數據來看,選擇C語言人才的企業多數以電子工程師、嵌入式工程師、硬體工程師、IOS工程師等為主,學歷本科以上相關專業,三年以上工作經驗,且外語水平要求至少四級以上。既然C語言學習者的就業門檻那麼高,為什麼還有很多人執著的去學習C語言呢?總結而言,無外乎以下幾點原由:

1)C語言不是面向對象語言。

因為這一點,任何學習C語言的人必須學會用函數思考問題。當你真正的去學習一門面向對象語言時,就會有C語言的函數學習基礎去對比。這會使學習面向對象編程更容易理解和更有樂趣。

2)用C編程就像進行智力體操。

你要顧及到每一件事情,而這在很多其他語言中他會為你處理。你要管理指針,內存分配,和內存回收。你要明白如何處理串,還有動態數據。在其他語言中,所有這些對你來說是隱藏的。你不知道他們如何運行,更不用說改變他們的運行方式了。你得到了使用的便利,失卻了對程序的控制和速度。很多情況下,這是筆值得的買賣。其他的情況下就不是這樣了。

3)不同情況下你會使用不同的編程語言。

某些情況下要求使用Lisp,其他的要Java,還有別的要C++。但是C是你堅實的基礎。你可能不會使用它做一些項目,但是它會幫助提高你的能力,熟練的用其他語言編程。

4)除了匯編語言之外,C代碼生成的程序比其他任何語言生成的程序來得更小和運行更快。

那麼為什麼不學匯編語言呢?匯編是一門學了很有用的.語言,但是它沒有C那樣的可移植性,並且其他流行的語言比如JAVA的語法是基於C的,而不是匯編。你仍然應該學匯編,但它並不會證明它會像學C那樣有用。

5)如果你想要寫一個視頻游戲引擎或操作系統,你會需要C。

你不能使用C#, Java, 或 Basic來完成這些編程任務。

C語言的發展史:

C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie於1972年推出,1978年後,C語言已先後被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。

我適合學習C語言嗎?

首先我們要認清一個事實:C語言工作者只是眾多從事軟體開發者中的一小部分,在深圳這樣一個IT企業雲集的大城市,使用其它語言從事軟體開發的工作者多如牛毛,薪資待遇不比從事C語言開發的人低,當編程愛好者在選擇第一個編程語言時,C語言不一定是首先。我適合學習C語言嗎?解決這個問題,先回答以下幾個問題:

1)你學習C語言的目的是什麼?如果是想從事這方面的工作,那麼請義無反顧的堅持下去,推薦你在《微機原理》、《計算機組成原理》和《計算機系統結構》三本書中選一本配合《C語言程序設計》來看,這樣可以融匯貫通,讓你對編程有更深入更系統化的理解。而這種理解對計算機類學科的學習來說很重要。

2)您具備學習C語言的條件嗎?由於入職C語言編程的企業對入職者的要求比較高,在沒有編程工作經驗前提下多數想通過自學進入類似企業的人幾乎為零,包括很多計算機專業畢業的大、中專畢業生在校期間都會學到C語言,畢業出來後依然雲里霧里。C語言的開發,需要在實際工作中才能快速掌握。同時,英語(從事C語言開發需要經常查閱英文資料,尤其是單片機領域)、學歷、數學演算法、極強的邏輯思維能力等等也是讓多數人望而卻步的門檻。

I. c語言變數基本類型有哪些

c語言的變數有三種類型:char,int,float,double

其中char為字元類型的變數是八位的,最前一位作為符號位,後面七位作為數據位.它的存儲范圍在-128到127之間.

int整數類型的變數是16位的,最前一位為符號位,後面的15位作為數據位.它的存儲范圍在-215到215-1.也就是-32768到32767.它不包擴小數點以後的數,在一般編譯器中給int類型賦予帶有小數的數.編譯器會自動去掉小數點後面的數保留整數部分.

float為浮點數類型.首先要說明的是浮點數有兩部分組成,第一部分是指數,也就是多少次冪嘛.第二部分是由尾數組成也就是一個數科學表示發之後除去冪那部分剩下的(呵呵!!!)如1.33333.那麼c中的浮點數就有三部分.32位的浮點數第一位就是第一部分它決定數的符號.第二部分是八位的指數.第三部分是23位的尾數.所以浮點數具有6到7位的存儲精確度.范圍為3.4e-38到3.4e+38的數值.注:3.1415926e+7表示3.1415926.0.在給浮點數賦值的時候可以採用如下方法.123.45和1.2345e2是等價的.

double為雙精度型變數.c編譯器通常用64位來存儲雙精度性變數.它的精確度能夠達到14到15位.64位中第一位是符號位.後面的11位是指數位.最後的52位是尾數.它的范圍是-1.7e-308到1.7e+308.

類型標識符:unsigned,short,register,long和signed.

其中unsigned提示編譯器不要保留符號位,這樣可以擴大數據類型正數的范圍.比如unsigned int的范圍就變位0到65535了.

short類型用在有的編譯器不能給太大的存儲范圍,需要給一個比較低的溢出界限.比如有的編譯器就用的是32位來存儲int類型.用short來標識它可以保證int是用16位來標識的.

register表示一個變數可能會用得很頻繁.需要很快得存取速度所以指定的把它存到寄存器當中.

long表示不希望用16位來存儲整形變數時可以用long指定它用32位來存儲可以得到更大得表示範圍.

當然還有long unsigned int 這樣得類型.

用戶自定義數據類型

用戶可以使用typedef來自己定義自己需要得數據類型.如下例:

typedef unsigned long int myint;

myint num1;

這樣num1就是unsigned long int類型的了.

J. C語言變數的基本類型有哪些

基本類型如圖所示

拓展資料:

short占據內存2個byte;int占據內存4 個byte;long占據內存4 個byte;float占據內存4個byte;double占據內存8 個byte;char占據內存1 個byte。

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