C言語の基礎

int i = 5;
int a = i++;
int b = ++i;
printf("%d %d %d\n", a, b, i);

前置と後置の ++ を使った上のコードを実行したときの出力として、正しいものはどれか。

  1. A5 6 6
  2. B5 7 7
  3. C6 7 7
答えと解説を見る

正解:B. 5 7 7

後置の i++ は、式の値として増やす前の値を使い、そのあとで i を1増やします。そのため a には5が入り、i は6になります。前置の ++i は、先に i を1増やしてから、増やした後の値を式の値にするので、i は7になり、b にも7が入ります。出力は「5 7 7」です。

  • A. i++ でも i 自身は6に増えます。i が5のままだと考えた場合の値です。
  • B. 正しい。a は増やす前の5、b と i は2回増えた後の7です。
  • C. 後置の i++ の値は増やす前の5なので、a は6ではありません。
この分野を解く 分野ページへ

C言語の基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

C言語の基礎のほかの問題

  1. if 文の条件に = を書いた上のコードを実行したときの出力として、正しいものはどれか。
  2. レジスタの値 reg のビット2が1かどうかを調べるつもりで、上のコードを書いた。実行したときの結果として、正しいものはどれか。
  3. uint8_t は8ビットの符号なし整数型である。上のコードを実行したときの出力として、正しいものはどれか。
  4. uint8_t は8ビットの符号なし整数型である。x を10回増やす上のコードを実行したときの出力として、正しいものはどれか。
  5. unsigned char は8ビット、int は32ビットとする。上のコードを実行したときの出力として、正しいものはどれか。