• 締切済み

すいませんが、記述の内部動作教えてください。

 C言語の記述で、  for(i-16,sum=0;i;) sum+=(i/=2); printf("%d\n,sum); とあったら、for文の中再設定式がないのでiは  戻ってきたら何も処理しないとして、  このsum+=(i/=2);の部分のi/の部分これはiを何で割るのか  がわかりません。  ここの部分どんな内容になるのか教えてほしいです。

みんなの回答

回答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

yorosi18
質問者

お礼

返信ありがとうございます。  解説読む限り2で除算していくのが  iの変化の様子なので間違いないです。  ありがとうございます。  また複合代入文を参考ページから見させていただきました。  /=ありますね。ご丁寧にありがとうございました。

  • 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

参考URL:
http://www.asahi-net.or.jp/~AX2S-KMTN/ref/bdh.html
yorosi18
質問者

お礼

 すいませんでした。  for文内部i-16になってましたね。i=16です。  失礼しました。  紛らわしく書いてしまいすいませんでした。  

  • toppo1969
  • ベストアンサー率39% (64/162)
回答No.1

i/=2 は i=i/2 と同じでは?

yorosi18
質問者

お礼

 返信ありがとうございます。  解説読む限り2で除算していくのが  iの変化の様子なので間違いないです。  ありがとうございます。

関連するQ&A