#include <stdio.h>
void main(void)
{
int price;
scanf("%d", &price);
switch (price)
{
case 1000: // what i want - case pay >= 1000
// code (no break - intentional)
case 500: // ....... - case pay >= 500
// code
default:
break;
}
}
我是新手。是否有任何替代方法switch
,break
也可以在 a 中使用比較,而不是常量switch
?
uj5u.com熱心網友回復:
只是一系列if
陳述:
if (price >= 1000) {
// do something
}
if (price >= 500) {
// do some more stuff
}
- 您可能還想使用
#define
這些幻數(1000, 500 ...)
。或使用列舉它們enum
。 - 雖然
switch()
看起來像一個函式,但它是一個陳述句塊。
uj5u.com熱心網友回復:
正如其他人所說,這個問題更適合于連續if
塊而不是switch
陳述句(在 C 編程世界中,許多人不贊成使用故意掉線)。
但是,如果您想將一個數字劃分為固定大小的塊范圍(在您的情況下,該大小為 500),那么您可以將您的數字除以該塊大小并將結果用作switch
變數。另外,請注意,default
案例不一定是最終案例——它可以在任何地方,甚至是第一個案例。
在下面的示例中,由于失敗(即break;
任何塊中沒有陳述句case
),case 0:
代碼將針對任何輸入運行;對于小于 500 的輸入(即整數除法將導致 0),只有這種情況才會執行。對于 500 到 999 范圍內的數字(除法將給出 1),case 1
and case 0
代碼將運行;并且,對于數字 >= 1000,default
案例將運行,然后是其他兩個塊。(此代碼需要一個正值!price
)
#include <stdio.h>
int main(void)
{
int price = 0;
printf("Price: ");
int s = scanf("%d", &price);
if (s != 1 || price < 0) {
printf("Invalid price!\n");
}
else {
switch (price / 500) {
default:
printf("Price is >= 1000!\n");
case 1:
printf("Price is >= 500\n");
case 0:
printf("Price is anything\n");
}
}
return 0;
}
正如我所說,我通常不建議使用這種switch
情況下(可憐的雙關語);但是,盡管有這個建議,實際上添加額外的塊/條件非常容易,例如 1000 - 1499 范圍內的價格代碼,您可以在其中插入一個case 2:
塊到代碼中。此外,當“范圍”的數量變得足夠大(例如,超過 3 個)時,使用這樣的,而不是陳述句/塊鏈可以說會變得更清晰。switch
if
uj5u.com熱心網友回復:
使用鏈式if … else
陳述句:
if (1000 <= price)
{
// Things for price 1000 or more.
}
else if (500 <= price)
{
// Things for price 500 or more.
}
else
{
// Things for other cases.
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/464179.html
上一篇:揭開換行符的神秘面紗(再次)