【发布时间】:2016-04-15 20:27:04
【问题描述】:
我做了一个非常简单的程序来打印两个变量的地址。
#include<stdio.h>
int main()
{
int a,b;
printf("%u\n%u",&a,&b);
return 0;
}
但是,Clang-3.7 编译器给出警告为:
警告:格式指定类型'unsigned int',但参数的类型为'int *' [-Wformat]`
但是,当我使用 GCC-5.x 编译时,它没有给出任何警告。其中哪一个是正确的?
我知道的一件事是unsigned int num=&a; 是错误的,因为地址只能存储在指针中。但是,编译器在打印地址时发出警告是否正确?
我从gcc.godbolt.org编译我的程序
【问题讨论】:
-
GCC,如果配置正确 (
-Wall) 给出:warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'int *' [-Wformat=] -
我认为这个问题(以及发布的答案)是一个很好的规范副本的候选者:) 将它添加到收藏夹。
标签: c gcc printf clang format-specifiers