如何解决警告:格式“%u”需要“unsigned int”类型的参数,但参数 2 的类型为“int*”[-Wformat=]
当我在 GCC 编译器中编译这个简单的程序时,我收到了这个错误:- 警告:格式‘%u’需要‘unsigned int’类型的参数,但参数2的类型为‘int’ [-Wformat=]*
#include <stdio.h>
int main()
{
printf("Pointer\n");
printf("*******\n\n");
int i=3;
printf("Address of Variable i : %u",&i);
printf("Value stored in Variable i : %d\n",i);
printf("Value stored in Variable i : %d\n",*(&i));
return 0;
}
解决方法
即使没有任何额外的选项,gcc (9.3.0) 也会显示详细的警告信息
a.cpp: In function 'int main()':
a.cpp:7:38: warning: format '%u' expects argument of type 'unsigned int',but argument 2 has type 'int*' [-Wformat=]
7 | printf("Address of Variable i : %u",&i);
| ~^ ~~
| | |
| | int*
| unsigned int
| %n
因此格式 %u
(无符号整数)和参数 &i
(指针)之间存在不匹配。
查看 printf
转换说明符
u 将 无符号整数 转换为十进制表示形式 dddd。
...
p 编写一个实现定义的字符序列,定义一个指针。
在这种情况下,指针参数 %p
的正确格式是 &i
printf("Address of Variable i : %p",&i);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。