- 締切済み
すいませんが、記述の内部動作教えてください。
C言語の記述で、 for(i-16,sum=0;i;) sum+=(i/=2); printf("%d\n,sum); とあったら、for文の中再設定式がないのでiは 戻ってきたら何も処理しないとして、 このsum+=(i/=2);の部分のi/の部分これはiを何で割るのか がわかりません。 ここの部分どんな内容になるのか教えてほしいです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- winarrow07
- ベストアンサー率41% (143/346)
回答No.3
sum += (i/=2); は sum = sum + (i=i/2); と同じかと。 i/2をiに代入して、sum+iをsumに代入されてるかと。 http://www5c.biglobe.ne.jp/~ecb/c/05_03.html
- nagare
- ベストアンサー率33% (280/831)
回答No.2
2進数変換が理由だと思います 詳しくは、このサイトを http://www.asahi-net.or.jp/~AX2S-KMTN/ref/bdh.html for(i-16,sum=0;i;) って正しいですか? ちょっと直して、シュミレートした結果です for(i=16,sum=0;i!=1;) 1回目:sum=8 2回目:sum=12 3回目:sum=14 4回目:sum=15=>1111b
質問者
お礼
すいませんでした。 for文内部i-16になってましたね。i=16です。 失礼しました。 紛らわしく書いてしまいすいませんでした。
- toppo1969
- ベストアンサー率39% (64/162)
回答No.1
i/=2 は i=i/2 と同じでは?
質問者
お礼
返信ありがとうございます。 解説読む限り2で除算していくのが iの変化の様子なので間違いないです。 ありがとうございます。
お礼
返信ありがとうございます。 解説読む限り2で除算していくのが iの変化の様子なので間違いないです。 ありがとうございます。 また複合代入文を参考ページから見させていただきました。 /=ありますね。ご丁寧にありがとうございました。