【问题标题】:What does the output which I get from printf("%d") mean? [duplicate]我从 printf("%d") 得到的输出是什么意思? [复制]
【发布时间】:2020-03-05 20:13:40
【问题描述】:

我今天尝试了一个代码,发现 printf("%d") 仍然有输出。 在我的电脑上,我得到“1487504216”的输出。 我想知道为什么我得到输出以及输出的含义。 以下是我尝试过的代码。

#include <stdio.h>

int main()
{
    printf("%d");

    return 0;
}

【问题讨论】:

    标签: c printf stdio


    【解决方案1】:

    printf 返回打印的字符数。在您的情况下,您会得到一个奇怪的数字,因为您的格式无效。 printf("%d", 74) 将返回 2,因为它正在打印 2 个字符。

    【讨论】:

    • 它将返回 74
    • 没有。如果您检查函数的实际 返回值(不是打印的内容),它将是 2。试一试 :)
    • 你是对的,它会输出到控制台“74”但返回值是2。
    • downvoting 可能有两个原因:1. 像我这样的人没有说出输出和返回值之间的区别,2. 问题是关于打印到控制台的值而不是关于函数返回值
    【解决方案2】:

    printf("%d",... 期望下一个参数是要打印的数字。您没有向它传递参数,因此它只会从堆栈中获取下一个数据,并认为它是要打印的变量。所以你读取一些垃圾数据并打印出来......

    正式地这被称为“未定义的行为”,我的解释对于某些编译器和平台可能是正确的,但其他编译器和平台可能会拦截从堆栈中读取的无效数据并中止您的程序,或者其他任何事情都可能发生:行为是未定义

    【讨论】:

      猜你喜欢
      • 2020-12-28
      • 2013-07-16
      • 2014-04-12
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-12
      相关资源
      最近更新 更多