• ベストアンサー

C言語のとき方 教えてください

 main() { int i=6,j=4,k; k=++i * --j; k=i++ +k/j--; k=i*j-k; printf("%d",k); } ここで表示されるのは2なんですが、  自身は上の行から k=7*3=21 k=7+21/3=14 k=7*3-14=7 で答えは7だと思うのですが、どなたか教えてください。  行別に教えていただけると助かります。

みんなが選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8469/18132)
回答No.3

int i=6, j=4, k; printf("i=%d j=%d",i,j); k=++i * --j; printf("i=%d j=%d",i,j); k=i++ +k/j--; printf("i=%d j=%d",i,j); k=i*j-k; とすればすぐ分かる。

yorosi18
質問者

お礼

 そうですね、  各行で、値の表示させればわかりましたね。  ありがとうございます。  為になる解決方法を教えていただいて。

その他の回答 (2)

回答No.2

上から k=7*3=21 k=7+21/3=14 k=8*2-14=2 じゃないですか?後置インクリメント/デクリメントを忘れずに。

yorosi18
質問者

お礼

ありがとうございます。  納得できました。  後置インクリメント/デクリメント値の変化時期  が大事だったんですね  今後、インクリメント/デクリメント気をつけます。  助かりました。

noname#157743
noname#157743
回答No.1

>k=7*3=21 >k=7+21/3=14 ここまでは合っています。ただ、k=i++ +k/j--; の時、計算後にiとjは++と--で値が変化していますので、k=i*j-k; の時は i=8,j=2 です。なので、 k=8*2-14=2 になります。単純な見落としですよね。

yorosi18
質問者

お礼

 ありがとうございます。  納得できました。  3行目の値の変化が大事だったんですね  助かりました。

関連するQ&A