変数aに3473を与え、この値の偶数、奇数を判定するプログラムを作れ。
というC言語の課題が出たんですけど、解説を読んでも、よくわからないので質問させてください。
#include<stdio.h>
main()
{
int a,b;
a = 3473;
if (! (a % 2)) {
printf("%4d は、偶数。\n",a);
}
if ( (a % 2)) {
printf("%4d は、奇数。\n",a);
}
となるそうなんですけど、なぜ、!(a % 2)なら偶数となるのでしょうか・・・。
無題
Re:無題
確かにこれは解りにくいですね。 条件式は評価されたときに何が返るかご存知でしょうか。 if( ○○ ) と書いたとき、○○が真なら実行されますよね。 真というのは「0以外」 偽というのは「0」です。 では、aという数が以下のように変化しているとしましょう。 0,1,2,3,4,5,6.... と言う数を2で割ったあまりを「a%2」であらわしてみると 0,1,0,1,0,1,0.... ですよね。 つまり計算結果が0なら偶数です。ここで if( a%2 ) とすると、偶数の時0なので、実行されませんよね。 何故なら0は偽だからです。 ビックリマークは否定を表しますから、 if( !(a%2) ) は「0以外」をあらわします。つまり、真です。 わかるでしょうか?