C
1#include<stdio.h> 2 3int a[10] = {-1, 23, -34, 45, 5, 6, 7, 8, 9, 10}; 4 5int main(void) { 6 int i, sum = 0; 7 printf("a = %08x\n",a); 8 for(i=0;i<10;i++) { 9 sum += a[i]; 10 } 11 printf("sum = %d\n",sum); 12 return 0; 13}
上記の
printf("a = %08x\n",a); (出力: a = 1058a7bc)
を実行した直後の16進数で表したメモリアドレス上の値を埋めよ(intは32ビットの整数であることに注意)という問題なのですが
空欄はfor文内のsumに代入された値が格納されていくということはわかりましたが、
(1) sum=0;と初期化した場合の16進数は00000000だと思うのですが,ffffffffとなるのはなぜでしょうか。
(2) 32ビットのアドレスに8ビット(1バイト)の値しか格納できないのはどうしてなのでしょうか。
(3) 同じ変数に何度も代入されるとしても毎回新しいメモリのアドレスに格納されていくのでしょうか。
多くなってしまいましたが、ご教示願います。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/09 16:02