并未要求一次性將所有的變量聲明或者定義,只要求在使用某個變量之前先定義。變量的定義風(fēng)格利弊如下:
目前成都創(chuàng)新互聯(lián)公司已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、鐘山網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
1、變量在函數(shù)開頭定義:便于修改。
2、變量就近定義:便于閱讀。
3、變量在塊語句的開頭定義:有的臨時變量放在語句塊開頭,可以不用在函數(shù)開頭定義,并且在使用完畢后釋放空間,可以這么做,但不要無故添加花括號來提高代碼的結(jié)構(gòu)。
一般的,為了要達(dá)到最大的兼容跨平臺性,還是放在函數(shù)開頭定義。因為C89規(guī)定,在任何執(zhí)行語句之前,在塊的開頭聲明所有局部變量。
如以下代碼:
會報錯信息:error C2065: 'salary' : undeclared identifier。
在C99以及C++中則沒有這個限制,即在首次使用之前,可在塊的任何位置都可以聲明變量。
擴(kuò)展資料:
c語言變量定義和保存格式的關(guān)系:
1、源文件保存為.c格式的話變量只能定義在最前,若保存為.cpp格式的話,變量定義較為靈活,不用在最前。
2、在C語言里,變量只能在函數(shù)的開頭處聲明和定義。在函數(shù)里要用到的變量必須要在開頭處聲明定義。聲明定義的前面不能有任何其他非聲明定義的語句。全局變量在函數(shù)體的外部聲明定義。
而C++里(.CPP文件是按C++標(biāo)準(zhǔn)編譯的),只要在用到變量前對該變量進(jìn)行聲明定義就行了,位置不做特別要求。而C語言的就定了在一個模塊里(函數(shù)、循環(huán)體等)先聲明一切所需變量后才能進(jìn)行相關(guān)操作的規(guī)定。
參考資料:
百度百科--C語言
可能有些不聲明也能通過,但效率極低,最好先聲明。
1、C語言是一門通用計算機(jī)編程語言,應(yīng)用廣泛。C語言的設(shè)計目標(biāo)是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語言。
2、盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標(biāo)準(zhǔn)規(guī)格寫出的C語言程序可在許多電腦平臺上進(jìn)行編譯,甚至包含一些嵌入式處理器(單片機(jī)或稱MCU)以及超級電腦等作業(yè)平臺。
3、二十世紀(jì)八十年代,為了避免各開發(fā)廠商用的C語言語法產(chǎn)生差異,由美國國家標(biāo)準(zhǔn)局為C語言訂定了一套完整的國際標(biāo)準(zhǔn)語法,稱為ANSI C,作為C語言最初的標(biāo)準(zhǔn)。
#
include
"math.h"
#
include
stdio.h
void
get_equa(float
a,float
b,
float
c)
//注釋:聲明空類型float函數(shù)get_equa()
{
if(a==0.0)
//注釋:系數(shù)a的值為0的情況.
if(b==0.0)
//注釋:a值為0的情況下b也為0.
printf("data
error,
no
answer
to
show!");
//注釋:非一元二次方程式,打印“data
error...”
else
printf("the
equation
only
have
one
root:
%f",-c/b);
//注釋:打印唯一解.
else
{
double
disc,term1,term2,root_1,root_2,two_a;
//注釋:聲明必要double型變量.
//注釋:一元二次方程式的根有兩個,表達(dá)式這里不好寫,但數(shù)學(xué)上是這樣讀的:x
等于
2a
分之
負(fù)b
加減
根號下
b平方
減
4ac.(就是那個表達(dá)式的讀法.)
disc=b*b-4*a*c;
two_a=2*a;
term1=-b/two_a;
term2=sqrt(fabs(disc))/two_a;
//注釋:根號下b平方減4ac除以2a的值.
root_1=term1-term2;
root_2=term1+term2;
if(disc0)
printf("the
equation
only
have
the
complex
root:\n
real
part
=%f,
imag
part
=%f",term1,term2);
//注釋:打印虛部和實部的值.
else
printf("the
equation
have
two
roots:\n
one
is
%f\n
another
one
is
%f",root_1,root_2);
//注釋:打印它的兩個實數(shù)根.
}
}
void
main()
{
float
a,b,c;
printf("please
input
your
equation's
a,b,c:\n");
scanf("%f%f%f",a,b,c);
get_equa(a,b,c);
}
代碼測試通過。。有什么不懂的可以問我。。嘿嘿。
比如 int a = 10,b=20;int getSub(int a,int b){ return a+b;//這里的a,b和全局變量a,b沒有任何關(guān)系——除了名字相同。在該函數(shù)中形參a,b會覆蓋全局變量a,b。}如果你這樣寫int getSub(){ return a+b;//那么這里的a,b就是全局變量了。 }