c言語初心者のくだらない質問

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
まるくま
記事: 39
登録日時: 12年前
住所: 群馬県

c言語初心者のくだらない質問

#1

投稿記事 by まるくま » 12年前

読み込まれた整数値以下である正の偶数を昇順に表示するプログラムを作成せよ。で

#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まで表示されてしまします。
なぜでしょうか?初心者です。

まるくま
記事: 39
登録日時: 12年前
住所: 群馬県

Re: c言語初心者のくだらない質問

#2

投稿記事 by まるくま » 12年前

C++ではなくCです。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: c言語初心者のくだらない質問

#3

投稿記事 by みけCAT » 12年前

コードはcodeタグで囲んでいただけるとありがたいです。

i+=2はiに2を足した後の値が返るので、
i==18のときにi<=noを通過し、printf("%d ",i+=2);で18+2である20が出力されます。

コード:

while((i+=2) <= no)
printf("%d ", i);
とすれば大丈夫だと思います。
さらに、最初のi = 2;の代わりにi = 0;とすればなおよいですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

まるくま
記事: 39
登録日時: 12年前
住所: 群馬県

Re: c言語初心者のくだらない質問

#4

投稿記事 by まるくま » 12年前

なるほど・・・ご回答ありがとうございます!
つまりprintf("%d\n",i+=2);はiに2を足した値が出力されるということでしょうか?

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: c言語初心者のくだらない質問

#5

投稿記事 by みけCAT » 12年前

iに2を足し、その値を出力するということです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

まるくま
記事: 39
登録日時: 12年前
住所: 群馬県

Re: c言語初心者のくだらない質問

#6

投稿記事 by まるくま » 12年前

ありがとうございます。今後ともよろしくお願いします(`・ω・´)

閉鎖

“C言語何でも質問掲示板” へ戻る