if語(yǔ)句是每個(gè)編程語(yǔ)言中共有的特性,包括C語(yǔ)言。下面是一段代碼,使用了if語(yǔ)句來(lái)確保只傳入了一個(gè)或兩個(gè)命令行參數(shù):
#include <stdio.h>
int main(int argc, char *argv[])
{
int i = 0;
if(argc == 1) {
printf("You only have one argument. You suck.\n");
} else if(argc > 1 && argc < 4) {
printf("Here's your arguments:\n");
for(i = 0; i < argc; i++) {
printf("%s ", argv[i]);
}
printf("\n");
} else {
printf("You have too many arguments. You suck.\n");
}
return 0;
}
if語(yǔ)句的格式為:
if(TEST) {
CODE;
} else if(TEST) {
CODE;
} else {
CODE;
}
下面是其它語(yǔ)言和C的差異:
TEST表達(dá)式值為0時(shí)為false,其它情況為true。TEST周圍寫上圓括號(hào),其它語(yǔ)言可能不用。{}來(lái)閉合代碼,但是這是一種非常不好的格式,不要這么寫?;ɡㄌ?hào)讓一個(gè)分支的代碼的開(kāi)始和結(jié)束變得清晰。如果你不把代碼寫在里面會(huì)出現(xiàn)錯(cuò)誤。除了上面那些,就和其它語(yǔ)言一樣了。else if或者else的部分并不必須出現(xiàn)。
這段代碼非常易于運(yùn)行和嘗試:
$ make ex12
cc -Wall -g ex12.c -o ex12
$ ./ex12
You only have one argument. You suck.
$ ./ex12 one
Here's your arguments:
./ex12 one
$ ./ex12 one two
Here's your arguments:
./ex12 one two
$ ./ex12 one two three
You have too many arguments. You suck.
$
使這段代碼崩潰并不容易,因?yàn)樗?jiǎn)單了。嘗試把if語(yǔ)句的測(cè)試表達(dá)式搞亂:
else部分,使它不能處理邊界情況。&&改為||,于是你會(huì)把“與”操作變成“或”操作,并且看看會(huì)發(fā)生什么。&&,它執(zhí)行“與”操作。上網(wǎng)搜索與之不同的“布爾運(yùn)算符”。if語(yǔ)句使循環(huán)提前退出。你需要break語(yǔ)句來(lái)實(shí)現(xiàn)它,搜索它的有關(guān)資料。