アプリ版:「スタンプのみでお礼する」機能のリリースについて

インクリメント演算子のみを用いて、下に表示されるようにプログラムします

99
100
102
103
103
105
このとき、どのようなプログラムになるのでしょうか?
※Cygwin64を使用しています

A 回答 (3件)

質問者さんが聞きたいのは、変数iに対して算術演算子を使用して、表示したいという話だと解釈すると、前置、後置をうまく使い分ければいいだけです



ひもといて、説明すると、初期値を99とした場合、インクリメント演算子を使うと、通常は1づつプラスされるので、

99, 100, 101, 102, 103, 104

となるでしょう。次に実際に表示される数字、()内は元の数字としてみた場合

99, 100, 102(101), 103(102), 103, 105(104)

となります。

ここで注目するのは、連続する数字の差が2つある場合(100,→102と103→105のケース)では、前置後置演算子の重ねがけ(++i++)は出来ないので、前の変数の後置演算子と、その時の変数の前置演算子を使う必要があります

例) int j =103, j++, ++j;

それを適応すれば[]内の数字は表示される数字

99, i++[100], ++i[102] , 103(102), i++[103], ++i[105]

となり、さらに紐解くと、

 int i = 99;
 printf("%d ", i++); //99
 printf("%d ", i++);  //100
 printf("%d ", ++i); //102
 printf("%d ", ++i); //103
 printf("%d ", i++); //103
 printf("%d¥n", ++i); //105

となります
    • good
    • 1
この回答へのお礼

書いてある通りに打ち込んだら上手く行きました!ありがとうございます
自分でも頑張って勉強していきます!

お礼日時:2024/05/19 22:35

「インクリメント演算子のみ」では不可能ではないかなぁ.



関数呼び出し演算子を使わないとどうにもならないと思う.
    • good
    • 0

main() {


  puts("99\n100\n102\n103\n103\n105");
}
でいいと思うんだがなあ。

インクリメント演算子を使えと言うなら、
int data[] = { 99, 100, 102, 103, 103, 105 };
main() {
  int i;
  for(i = 0; i < sizeof data/sizeof int; i++)
    printf("%d\n", data[i]);
}
かなあ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています