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}
上記のプログラムを実行しようとしたところ
warning: format specifies type 'unsigned int' but the argument has
type 'unsigned int *' [-Wformat]
printf("a = %08x\n",a);
,,,,,,,,,,,,,,,,,,,,,,,,~~~~ ^
というようなエラーが出てしまいました.
おそらく配列でaを宣言しているのに対しaとしているからエラーが出るのかと思いました。
しかし、この問題で出力として
a=1058a7bcと出力されると記載されています。
プログラムが仮に正常に実行されるとして、16進数であるこの値はどこから来るのか理解できません。
10進数に直すと274245564と求められましたが、特に関係なさそうでした。
環境としては1ワード長が4バイト、32ビットのバイトアドレス方式のマルチコアで実行するとされています。
ご教示願います。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/09 11:28