void main(void)
{
int i;
for(i=1;i<=5;i++)
{
if(i/5)
continue;
printf("%d",i);
}
}
我簡單的查詢是,如果內部條件「if」計算爲一個分數,它被視爲0?因爲這裏輸出是1234,所以當條件是1/5,2/5,3/5,4/5它是i的初始值,當5/5 = 1時它正在執行continue語句。當條件裏面,如果語句是分數
void main(void)
{
int i;
for(i=1;i<=5;i++)
{
if(i/5)
continue;
printf("%d",i);
}
}
我簡單的查詢是,如果內部條件「if」計算爲一個分數,它被視爲0?因爲這裏輸出是1234,所以當條件是1/5,2/5,3/5,4/5它是i的初始值,當5/5 = 1時它正在執行continue語句。當條件裏面,如果語句是分數
i/5
將被視爲整數除法(當然i
是int
當然),無論它出現在哪裏(if
或其他)。所以兩個整數之間的/
實際上會給你商。
i/5
將給出0
當i ∈ {0, 1, 2, 3, 4}
和1
當i = 5
。
當條件表達式爲true
時,if
語句執行條件語句(在此例中爲continue
語句)。整數值被轉換爲布爾值,如下所示:零變爲false
,任何其他值變爲true
。由於直到i==5
之前表達式不會計算爲非零值,所以條件語句在此之前不會執行。
「零變成真,其他任何值變成假」 - 你確定你不是相反的意思嗎? –
@GovindParmar是的,謝謝 – bolov
只要你有
if (expr)
和expr
顯然不是東西是真/假,你總是可以認爲它是這樣的:
if((expr) != 0)
所以如果expr
評估的東西分數,好吧,只要分數不等於0,條件將評估爲真。
但是,在你的例子中,因爲i
是一個整數,所以i/5
將做整數除法,它將永遠不會給出分數。如果i
小於5,則i/5
將爲0,這將最終導致條件爲false。
什麼是*整數除法*規則? –
'i/5'是一個整數除法(無浮點操作數),因此結果被截斷(小數部分被捨棄)。 – HolyBlackCat
如果你只想知道有關師的操作,爲什麼你會問一些關於「如果」的情況?該部門也將在其他地方以相同的方式完成。 – Gerhardh