gpt4 book ai didi

c - 打印整数值时出现意外输出

转载 作者:太空狗 更新时间:2023-10-29 14:54:53 25 4
gpt4 key购买 nike

#include<stdio.h>
void main()
{
int i = 5;
printf("%p",i);
}

我尝试在 Linux 上使用 GCC 编译器编译这个程序,它在编译程序时发出警告

%p expects a void* pointer 

运行时输出 46600x3。

但是当我使用网站 codingground.tutorialspoint.com 在线编译它时,我得到了一个输出等于 0x5 即十六进制输出,谁能解释一下原因?

最佳答案

%p 需要某物(或指针)的地址。您提供变量 i 的值而不是地址。使用

printf("%p",(void*)&i);

代替

printf("%p",i);

GCC 将在没有警告的情况下编译该程序,并在您运行它时打印出存储 i 的地址。符号 (&) 是寻址运算符,它给出了变量的地址。强制转换也是必需的,因为格式说明符 %p 需要类型为 void* 的参数,而 &i 是类型 int*


如果要打印变量的值,请使用

printf("%d",i);

使用错误的格式说明符将导致 UB(Undefined Behavior)

关于c - 打印整数值时出现意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27753922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com