在本教程中,您將在示例的幫助下了解C語(yǔ)言編程中的if語(yǔ)句(包括if ... else和嵌套if..else)。
ifC語(yǔ)言編程中該語(yǔ)句的語(yǔ)法為:
if (test expression) { //測(cè)試表達(dá)式為真時(shí),執(zhí)行的語(yǔ)句 }
if語(yǔ)句在括號(hào)()內(nèi)評(píng)估測(cè)試表達(dá)式。
如果測(cè)試表達(dá)式的計(jì)算結(jié)果為true,則將if執(zhí)行主體內(nèi)部的語(yǔ)句。
如果測(cè)試表達(dá)式的計(jì)算結(jié)果為false,if則不會(huì)執(zhí)行主體內(nèi)的語(yǔ)句。
要了解有關(guān)何時(shí)將測(cè)試表達(dá)式評(píng)估為true(非零值)和false(0)的更多信息,請(qǐng)檢查關(guān)系運(yùn)算符和邏輯運(yùn)算符。
//程序顯示一個(gè)數(shù)字,如果它是負(fù)數(shù) #include <stdio.h> int main() { int number; printf("輸入一個(gè)整數(shù): "); scanf("%d", &number); //如果數(shù)字小于0,則為true if (number < 0) { printf("您輸入 %d.\n", number); } printf("if語(yǔ)句很簡(jiǎn)單。"); return 0; }
輸出1
輸入一個(gè)整數(shù): -25 您輸入 -25. if語(yǔ)句很簡(jiǎn)單。
當(dāng)用戶(hù)輸入-25時(shí),測(cè)試表達(dá)式number<0將評(píng)估為true。因此,您輸入的-25 將顯示在屏幕上。
輸出2
輸入一個(gè)整數(shù): 5 if語(yǔ)句很簡(jiǎn)單。
當(dāng)用戶(hù)輸入5時(shí),測(cè)試表達(dá)式number<0的計(jì)算結(jié)果為false,并且if不執(zhí)行主體內(nèi)部的語(yǔ)句
if語(yǔ)句可以有一個(gè)可選的else塊。if..else語(yǔ)句的語(yǔ)法為:
if (test expression) { //測(cè)試表達(dá)式為真時(shí),要執(zhí)行的語(yǔ)句 } else { // 如果測(cè)試表達(dá)式為假,則執(zhí)行的語(yǔ)句 }
如果測(cè)試表達(dá)式(test expression)的計(jì)算結(jié)果為true,
if內(nèi)的語(yǔ)句被執(zhí)行。
主體中else的語(yǔ)句從執(zhí)行中跳過(guò),即else中的語(yǔ)句不會(huì)被執(zhí)行。
如果測(cè)試表達(dá)式(test expression)的值為false,
else內(nèi)的語(yǔ)句會(huì)被執(zhí)行
if主體中的語(yǔ)句會(huì)被跳過(guò),即不會(huì)執(zhí)行。
// 檢查一個(gè)整數(shù)是奇數(shù)還是偶數(shù) #include <stdio.h> int main() { int number; printf("輸入一個(gè)整數(shù): "); scanf("%d", &number); //如果余數(shù)為0,則為true if (number%2 == 0) { printf("%d 是一個(gè)偶數(shù)。",number); } else { printf("%d是一個(gè)奇數(shù)。",number); } return 0; }
輸出結(jié)果
輸入一個(gè)整數(shù): 23 23 是一個(gè)奇數(shù)。
當(dāng)用戶(hù)輸入23時(shí),(test expression)測(cè)試表達(dá)式 number%2==0 的評(píng)估結(jié)果為false。因此,將執(zhí)行else主體內(nèi)的語(yǔ)句。
if...else語(yǔ)句執(zhí)行兩個(gè)不同的代碼,具體取決于測(cè)試表達(dá)式(test expression)為true還是false。適用于必須從兩種以上的可能性中進(jìn)行選擇。
if...else if...else允許您在多個(gè)測(cè)試表達(dá)式之間進(jìn)行檢查并執(zhí)行不同的語(yǔ)句。
if (test expression1) { // 語(yǔ)句 } else if(test expression2) { // 語(yǔ)句 } else if (test expression3) { // 語(yǔ)句 } . . else { // 語(yǔ)句 }
//程序使用=、> 或< 符號(hào)比較兩個(gè)整數(shù) #include <stdio.h> int main() { int number1, number2; printf("輸入兩個(gè)整數(shù): "); scanf("%d %d", &number1, &number2); //檢查兩個(gè)整數(shù)是否相等 if(number1 == number2) { printf("結(jié)果: %d = %d",number1,number2); } //檢查number1是否大于number2。 else if (number1 > number2) { printf("結(jié)果: %d > %d", number1, number2); } //如果以上兩個(gè)測(cè)試表達(dá)式均為false,則執(zhí)行下面語(yǔ)句 else { printf("結(jié)果: %d < %d",number1, number2); } return 0; }
輸出結(jié)果
輸入兩個(gè)整數(shù): 12 23 結(jié)果: 12 < 23
可以在另一個(gè)if...else語(yǔ)句的主體中包含另一個(gè)if...else語(yǔ)句。
此程序下面給出使用任一涉及兩個(gè)整數(shù)<,>和=類(lèi)似if...else階梯的實(shí)例。但是,我們將使用嵌套if...else語(yǔ)句來(lái)解決此問(wèn)題。
#include <stdio.h> int main() { int number1, number2; printf("輸入兩個(gè)整數(shù): "); scanf("%d %d", &number1, &number2); if (number1 >= number2) { if (number1 == number2) { printf("結(jié)果: %d = %d",number1,number2); } else { printf("結(jié)果: %d > %d", number1, number2); } } else { printf("結(jié)果: %d < %d",number1, number2); } return 0; }
如果if...else語(yǔ)句的主體只有一個(gè)語(yǔ)句,可以不需要使用方括號(hào){}。
例如,下面代碼
if (a > b) { print("Hello"); } print("Hi");
等同于
if (a > b) print("Hello"); print("Hi");