如何將以下if =語句轉換爲switch-statement而無需爲該間隔(41-49)之間的每個數字創建一個case?可能嗎?將if語句轉換爲switch語句
if (num < 50 && num > 40)
{
printf("correct!");
}
如何將以下if =語句轉換爲switch-statement而無需爲該間隔(41-49)之間的每個數字創建一個case?可能嗎?將if語句轉換爲switch語句
if (num < 50 && num > 40)
{
printf("correct!");
}
bool criteria1 = (num < 50 && num > 40);
switch criteria1: ...
這可能導致多級決策網絡..可怕嗎?
是布爾值這個唯一的方法嗎?還有另一種方法嗎?我可以將條件附加到案件嗎?只是好奇。 – wadafarfar
@wadafarfar,如果你想要的語言支持在評估(...)時返回true | false值並且它們被switch語句看到 - 那麼是的。 'switch(condition)true:code1; false:code2;結束;'會工作。爲此寫一個測試? –
在C或C++中(因爲您使用的是printf,我假設它就是這樣),所以需要爲每個選項枚舉個案。
switch/case
和if
之間的唯一區別是編譯器可以將其轉換爲計算出的goto而不是檢查範圍。如果switch/case
支持範圍,那將打破開放這個優化的可能性的目的。
你必須枚舉交換機的每個案例。編譯器將其轉換爲跳轉表,所以不能使用範圍。但是,您可以有多個案例使用相同的代碼塊,這可能更接近您想要的。
switch(num) {
case 41:
case 42:
case 43:
case 44:
case 45:
case 46:
case 47:
case 48:
case 49:
printf("correct!");
break;
default:
break;
}
這是怎麼回事?
switch ((num-41)/9) {
case 0:
printf("correct!");
break;
}
用什麼語言? C? C++?還有別的嗎? – Oded
而_why_你想轉換這樣一個表達式嗎? – Oded