2011-12-29 29 views
0

cの数値の除算を確認する必要があります。 Cでmodulus operatprを使用して、数値が別の数値で割り切れるかどうかを確認するにはどうすればよいですか?私はこれをやってみました:cのモジュラス演算子

if (file_int % 3) { 
    printf("Hoppity \n"); 
} 

それは動作しませんでした、file_intは9

に等しいですが、私は間違って何をしたのですか?

ありがとう

答えて

3

if (file_int % 3)は何をしたいの反対である、if (file_int % 3 != 0)と同じです。

if (file_int % 3 == 0) { 
    printf("Hoppity \n"); 
} 
// or 
if (!(file_int % 3)) { 
    printf("Hoppity \n"); 
} 
7

操作で0が返され、falseとして処理されるため、機能しませんでした。あなたが実際に必要

if(!(file_int % 3)) { 
    printf("Hoppity \n"); 
} 
+0

あなたはそれを明確にしていただけますか? –

+0

確かに。もしそれが割り切れるならば、あなたは0の余りを持つべきです( 'false'に相当)。' if(!(num%divisor)) 'または' if((num%divisor)== 0) '偽の結果を真の条件に変換する) –

+0

'file_int%3'は、** indivisibility **のための条件である' file_int%3!= 0'と等しいです。3. by ** divisibility ** by 3は ' file_int%3 == 0'、または等価的に '!(file_int%3)'となります。 – Amadan

1

モジュラスの結果が0の場合、均等に割り切れます。ループを続けるために3で割り切れないことをあなたが探しているように見えますが、あなたのコードスニペットは自信を持ってあなたの意図を引き受けるのに十分ではありません。

1

3,で割り切れる場合は0になり、ifブロックは実行されないためです。

if(file_int % 3 == 0) { 
    // do stuff 
} 
0

にMOD操作者が分割された剰余を返してみてください... 9ない残り3で割り切れるので、リターンがゼロであろう。

ただし、条件文では、ゼロ以外の場合はtrue、ゼロの場合はfalseと評価されます。それを(file_int % 3 == 0)に変更する必要があります。