这段代码有什么问题,我不能一起添加指针和无符号值吗?

lll*_*lll -1 c pointer-arithmetic

测试平台是Linux 32位.

我在代码中发现了一个错误,我不知道为什么......

我简化了这段代码并把它放在这里:

unsigned int aa  = 0;
unsigned int array[10000];
unsigned int* ptr = array + 2000;

printf("aa: %d ", aa);   // value 1
printf("ptr: %d \n", ptr);  //value 2
printf("aa+ptr: %d \n", aa + ptr);  // value 3
Run Code Online (Sandbox Code Playgroud)

编译器是gcc版本4.6.3

这看起来很傻但我不明白为什么value3!= value1 + value2

谁能给我一些帮助?

谢谢!

And*_*ter 6

在第二种和第三种情况下,您传递指向printf的指针,但使用%d作为格式化程序.你需要%p.

整数和指针不可互换.