読み込まれた整数値以下である正の偶数を昇順に表示するプログラムを作成せよ。で
#include <stdio.h>
int main(void)
{
int i, no;
printf("正の整数を入力してください:");
scanf("%d", &no);
i = 2;
while(i <= no){
printf("%d ", i);
i+=2;}
putchar('\n');
return (0);
}
というのはわかっているのですが、
while(i <= no){
printf("%d ", i);
i+=2;}
の部分を簡略化したかったので
while(i <= no)
printf("%d ", i+=2);
としたのですが、結果が19を入力したときに20まで表示されてしまします。
なぜでしょうか?初心者です。
c言語初心者のくだらない質問
Re: c言語初心者のくだらない質問
コードはcodeタグで囲んでいただけるとありがたいです。
i+=2はiに2を足した後の値が返るので、
i==18のときにi<=noを通過し、printf("%d ",i+=2);で18+2である20が出力されます。 とすれば大丈夫だと思います。
さらに、最初のi = 2;の代わりにi = 0;とすればなおよいですね。
i+=2はiに2を足した後の値が返るので、
i==18のときにi<=noを通過し、printf("%d ",i+=2);で18+2である20が出力されます。 とすれば大丈夫だと思います。
さらに、最初のi = 2;の代わりにi = 0;とすればなおよいですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: c言語初心者のくだらない質問
なるほど・・・ご回答ありがとうございます!
つまりprintf("%d\n",i+=2);はiに2を足した値が出力されるということでしょうか?
つまりprintf("%d\n",i+=2);はiに2を足した値が出力されるということでしょうか?