- ベストアンサー
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だと思うのですが、どなたか教えてください。 行別に教えていただけると助かります。
- みんなの回答 (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; とすればすぐ分かる。
その他の回答 (2)
- death_note
- ベストアンサー率32% (61/189)
回答No.2
上から k=7*3=21 k=7+21/3=14 k=8*2-14=2 じゃないですか?後置インクリメント/デクリメントを忘れずに。
質問者
お礼
ありがとうございます。 納得できました。 後置インクリメント/デクリメント値の変化時期 が大事だったんですね 今後、インクリメント/デクリメント気をつけます。 助かりました。
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 になります。単純な見落としですよね。
質問者
お礼
ありがとうございます。 納得できました。 3行目の値の変化が大事だったんですね 助かりました。
お礼
そうですね、 各行で、値の表示させればわかりましたね。 ありがとうございます。 為になる解決方法を教えていただいて。