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の値をprinntingし、5/5 = 1のときcontinue文を実行します。if文内の条件が小数である場合
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の値をprinntingし、5/5 = 1のときcontinue文を実行します。if文内の条件が小数である場合
i/5
は、(if
などに表示されていても)整数除算(i
がもちろんint
の場合)として扱われます。したがって、2つの整数の間の/
は実際にあなたに商を与えます。
i/5
は、i ∈ {0, 1, 2, 3, 4}
と1
の場合、i = 5
の場合、0
となります。その条件式true
とき
if
文(この場合continue
文)条件文を実行します。整数値は、次のようにブール値にキャストされます。ゼロはfalse
になり、それ以外の値はtrue
になります。式はi==5
まで非ゼロ値に評価されないため、条件文はそれまで実行されません。 expr
が何かに評価されるのであれば
if((expr) != 0)
:
"ゼロは真となり、他の値は偽になります" - あなたはその逆を意味していないと確信していますか? –
@GovindParmarはい本当にありがとう – bolov
あなたは
if (expr)
とexpr
があるときは明らかに真/偽だものではありません、あなたは常にこのように考えることができ分数、分数が0に等しくない限り、条件は真と評価されます。
ただし、i
は整数なので、i/5
は分数を決して与えない整数除算を行います。 i
が5未満の場合、i/5
は0になり、条件付きの偽になります。
整数除算*ルールとは何ですか? –
'i/5'は整数除算(浮動小数点オペランドなし)なので、結果は切り捨てられます(小数部分は破棄されます)。 – HolyBlackCat
分割操作に関することだけを知りたいのであれば、なぜ「内部条件」について何か質問しているのですか?部門は他の場所でも同じように行われます。 – Gerhardh