我正在測試此代碼,但爲什麼沒有錯誤呢?沒有錯誤,爲什麼?
#include <stdio.h>
int main()
{
int a = 1025;
int *p;
p = &a;
// now I declare a char variable ,
char *p0;
p0 = (char*) p; // type casting
printf("", sizeof(char));
// is %d correct here ?????
printf("Address = %d, value = %d\n", p0, *p0);
}
我的問題: 是%d
正確的嗎?因爲%d
是整數不是字符,爲什麼沒有錯誤呢?
其實問題是你傳遞地址的第一個'%d':你應該使用'%p'。 'printf(「Address =%p,value =%d \ n」,(void *)p0,* p0);'對於第二個'char'值只是提升爲'int'。 – LPs
此外,錯誤/警告還取決於您如何編譯代碼:使用'gcc -Wall -Wextra -pedantic-errors test.c -o test -std = c11 -g',您有'warning':format'%d'需要參數類型'int',但參數2的類型爲'char *'[-Wformat =] printf(「Address =%d,value =%d \ n」,p0,* p0);' – LPs
[格式正確說明符打印指針(地址)?](http://stackoverflow.com/q/9053658/995714) –