我用scanf和printf编写了简单的C程序,如:
int n; scanf("%d", &n); int result = 7 - n; printf("%d", &result);
并收到此警告消息:
警告:格式'%d'需要类型'int'的参数,但参数2的类型为'int *'[ - Wformat =] printf(“%d”,&result);
我不明白为什么参数2的类型为int *而不是int?我怎么解决这个问题?
result 是一个整数变量 . 如果要打印其值,请使用 %d 格式说明符并将参数提供为仅 result 而不是 &result .
result
%d
&result
这个
printf("%d", &result);
用 . . . 来代替
printf("%d", result);
如果要打印 result 变量的地址,请使用 %p 格式说明符 .
%p
printf("%p", &result); /* printing address */
Edit : %p 格式说明符需要 void* 类型的参数 .
void*
所以要打印 result 的地址,将其转换为 void* . 例如
printf("%p", (void*)&result); /* explicitly type casting to void* means it works in all cases */
谢谢@ajay指出,我忘了添加这一点 .
1 回答
result
是一个整数变量 . 如果要打印其值,请使用%d
格式说明符并将参数提供为仅result
而不是&result
.这个
用 . . . 来代替
如果要打印
result
变量的地址,请使用%p
格式说明符 .Edit :
%p
格式说明符需要void*
类型的参数 .所以要打印
result
的地址,将其转换为void*
. 例如谢谢@ajay指出,我忘了添加这一点 .