c - 打印无法识别的 int 变量会输出什么?

标签 c

如果我运行这个程序:

#include <stdio.h>

int main()
{
    int a=32,b=2,c,i;
    for(i=0;i<3;i++){
        printf("%d\n",c);
        c=a/b;
        a=c;
    }

    return 0;
}

输出是:

32765
16
8

在那里,我没有定义C的值,这个输出32765是从哪里来的? 即使我再次运行此代码更多时间,它也会显示不同的值,例如 32764,32767。为什么会显示这种不同的输出?

最佳答案

由于c具有自动存储期限(即非静态局部变量)且未初始化,因此其值为不确定。尝试打印从未获取其地址的未初始化变量(即不是地址运算符 & 的主题)会调用 undefined behavior .

即使您确实获取了c的地址,如果它包含陷阱表示,您仍然可能会出现未定义的行为。如果它不包含陷阱表示(并且大多数实现没有它们),则该值是未指定,这仅意味着无法预测打印值。

关于c - 打印无法识别的 int 变量会输出什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55652586/

相关文章:

c - Informix 到 Oracle : Dealing with Fetching Null Values

linux - #define SYSCALL_DEFINEx(x, sname, ...)

c - 重命名函数中的变量

c - 如何计算 C 中的大 nPr?

c++ - 如何从 s64 值中删除前 3 个字节和最后一个字节?

c - GetFileSizeEx 在 System32 目录上返回不正确的值

c - 在 C 中使用 EquivalentInverseCipher 进行 AES 加密/解密

C:扫描数组时忽略一个值

c - 是否有任何平台在 fd_set 上使用结构副本(对于 select() 或 pselect())会导致问题?

c - 函数是否可以在 Vivado HLS 中返回一个数组?