if語(yǔ)句和while循環(huán)
C語(yǔ)言中,if語(yǔ)句和while循環(huán)都會(huì)用到布爾表達(dá)式。下面是一個(gè)使用if語(yǔ)句的簡(jiǎn)單例子:
#include
int main()
{int b;printf("輸入一個(gè)值:");scanf("%d", &b);if (b < 0)
printf("值為負(fù)數(shù)n");return 0;}
程序從用戶讀入一個(gè)數(shù)字,然后用if語(yǔ)句測(cè)試這個(gè)數(shù)字是否小于零。如果小于零則打印一條消息,否則什么也不做。程序中的(b<0)稱為布爾表達(dá)式。C需要求出此表達(dá)式的值才能決定是否打印后面的消息。如果布爾表達(dá)式的結(jié)果是真,那么C將執(zhí)行緊接在if語(yǔ)句后面的一行代碼(或花括號(hào)中的代碼塊);如果布爾表達(dá)式的結(jié)果是假,那么C將跳過(guò)緊接在if語(yǔ)句后面的代碼行或代碼塊。
?
|
|
?
下面是一個(gè)稍復(fù)雜一點(diǎn)的例子:
#include
int main()
{int b;
printf("輸入一個(gè)值:");
scanf("%d", &b);
if (b < 0)
printf("值為負(fù)數(shù)n");
else if (b == 0)
printf("值為0n");
else
printf("值為正數(shù)n");
return 0;}
這個(gè)例子中的else if和else部分處理了值為零或?yàn)檎那闆r。
下面是一個(gè)更復(fù)雜一些的布爾表達(dá)式:
if ((x==y) && (j>k))
z=1;
else
q=10;
上面這個(gè)if語(yǔ)句的意思是:“如果變量x和y的值相等,而且變量j的值大于k的值,那么令變量z的值等于1,否則令變量q的值等于10?!痹贑程序中,您經(jīng)常使用類似這樣的if語(yǔ)句進(jìn)行判斷。一般而言,大多數(shù)判斷都很簡(jiǎn)單,像第一個(gè)例子。但偶爾也會(huì)遇到復(fù)雜一些的情況。
請(qǐng)注意,C使用==判斷相等,而用=為變量賦值。&&在C中代表布爾操作符與。
這是C語(yǔ)言中的所有的布爾操作符:
等于 ==
小于 <
大于 >
小于等于 <=
大于等于 >=
不等于 !=
與 &&
或 ||
非 !
您會(huì)發(fā)現(xiàn),while聲明和if聲明使用起來(lái)一樣簡(jiǎn)單。舉個(gè)例子:
while (a < b)
{printf("%dn", a);a = a + 1;}
?
|
|
?
C還提供一種do-while結(jié)構(gòu):
do{printf("%dn", a);a = a + 1;}while (a < b);
C中的for循環(huán)只不過(guò)是while語(yǔ)句的精簡(jiǎn)寫法。例如,您有如下C代碼:
x=1;while (x<10)
{……x++; }
您可以用for循環(huán)改寫成下面這樣:
for(x=1; x<10; x++)
{……}
請(qǐng)注意,while循環(huán)實(shí)際包括了三個(gè)步驟:初始化(x=1)、判斷(x<10)和增量(x++)。使用for循環(huán)可以把三個(gè)步驟寫在同一行中,但并不限制三個(gè)部分的具體內(nèi)容。例如,您有如下C代碼:
a=1;
b=6;
while (a < b)
{a++;printf("%dn",a);}
用for循環(huán)就可以寫為:
for (a=1,b=6; a < b; a++,printf("%dn",a));
這樣雖然有點(diǎn)不易讀懂,但還是允許的。在for循環(huán)的初始化和增量(不包括測(cè)試)部分,我們可以使用多條語(yǔ)句并用逗號(hào)操作符加以分隔。許多 C 程序員喜歡用一行代碼“濃縮”進(jìn)很多信息。但也有許多人認(rèn)為這樣會(huì)使代碼更加難以理解,所以他們選擇分開(kāi)來(lái)寫。
電子發(fā)燒友App


















評(píng)論