if
語句是每個(gè)編程語言中共有的特性,包括C語言。下面是一段代碼,使用了if
語句來確保只傳入了一個(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
語句的格式為:
if(TEST) {
CODE;
} else if(TEST) {
CODE;
} else {
CODE;
}
下面是其它語言和C的差異:
TEST
表達(dá)式值為0時(shí)為false
,其它情況為true
。TEST
周圍寫上圓括號,其它語言可能不用。{}
來閉合代碼,但是這是一種非常不好的格式,不要這么寫?;ɡㄌ栕屢粋€(gè)分支的代碼的開始和結(jié)束變得清晰。如果你不把代碼寫在里面會出現(xiàn)錯(cuò)誤。除了上面那些,就和其它語言一樣了。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)樗唵瘟恕L試把if
語句的測試表達(dá)式搞亂:
else
部分,使它不能處理邊界情況。&&
改為||
,于是你會把“與”操作變成“或”操作,并且看看會發(fā)生什么。&&
,它執(zhí)行“與”操作。上網(wǎng)搜索與之不同的“布爾運(yùn)算符”。if
語句使循環(huán)提前退出。你需要break
語句來實(shí)現(xiàn)它,搜索它的有關(guān)資料。