gpt4 book ai didi

c - 新手问 - 当我在 printf 中遗漏一个变量时发生了什么

转载 作者:太空宇宙 更新时间:2023-11-04 06:58:31 24 4
gpt4 key购买 nike

<分区>

我学习 C 语言是为了好玩。在我的第一段代码中(通过“艰难地学习 C”),我故意在 printf 语句中省略了变量。

#include <stdio.h>

int main() {
int age = 3;

printf("I am %d years old.\n");

return 0;
}

很简单。它按我的预期编制和抛出 yield 。但是当我愚蠢地运行损坏的程序时,我得到了一个不寻常的输出:

I am 1476430496 years old.

每次我运行它,数字都不同但相似。我想这可能是“年龄”的内存地址,所以我尝试了:

printf("age is %p\n", &age);

但事实并非如此:

I am 1570798240 years old.
age is 0x7fff5da07a78

所以我很好奇。这个数字是多少?它从何而来?我尝试了不同的输出类型(%s、%e、%u),但事情变得更奇怪了。

作为后续问题,当我尝试不带变量的 %p 时,我确实得到了一个内存地址。

I am 0x7fff53e8caa0 years old.

我也很好奇这个地址是从哪里来的?有什么办法可以让我看到里面可能有什么吗?

感谢您抽出宝贵时间和提供的任何帮助!

迈克

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