【发布时间】:2020-09-26 00:19:19
【问题描述】:
我在代码块中编译这段代码 sn-p,根本没有任何消息:
printf("adress of x %i\n",ptr);
现在我尝试通过终端和 gcc 编译它,但我收到了这条消息:
warning: format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘int **’ [-Wformat=]
gcc 无论如何都会生成一个可执行文件(它运行)。我做错了什么?
【问题讨论】:
-
总是使用 %p 作为指针。
-
Warning = 你做错了,但不会阻止我编译,Error = 你做错了(如果你的参数是
int**,作为参数传递@987654324 @) -
警告是知识渊博的用户可能做的不错,但学习者不太可能。错误是代码严重错误。
-
格式
%i用于整数,%p用于指针。在某些平台上,指针的大小可能与整数相同,但这绝对不能保证。函数printf将从内存中读取格式说明符指示的字节数,并将数据相应地呈现为整数,但如果指针大小与sizeof(int)不同,则会发生奇怪的事情。
标签: c++ c gcc gcc-warning