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