当前位置:  开发笔记 > 编程语言 > 正文

如果C中的语句和垃圾值

如何解决《如果C中的语句和垃圾值》经验,为你挑选了1个好方法。

我是C编程的新手.我知道这是一个非常简单的问题,但我需要一些建议.我正在锻炼控制结构if statement.我遇到了一个例子

这是代码: -

#include
int main()
{
    int a = 200, b, c ;
    if (a >= 300)
    {
        b = 100 ;
        c = 200 ;
    }
    printf ( "b=%d\nc=%d", b, c ) ;
    return 0;
} 

而这个的输出是: -

b=32767
c=0

在这里,我期待输出为两个值为零.通过查看此输出我很惊讶为什么变量中的垃圾值b.

这背后的原因是什么?或者我以错误的方式声明变量.这背后的整个情景应该是什么?



1> Sourav Ghosh..:

如果

if (a >= 300)

失败,b并且c不会分配任何值.

现在,bc是自动的局部变量,除非明确初始化,它们包含不定值.

参考C11,章节§6.7.9,初始化

如果没有显式初始化具有自动存储持续时间的对象,则其值是不确定的.[...]

使用单元化局部变量来访问它们的值会调用未定义的行为.

对于未定义的行为,参考相同标准的附录§J.2

具有自动存储持续时间的对象的值在不确定时使用.

因此,始终建议初始化本地变量,例如

int a = 200, b = 0, c = 0;

也就是说,FWIW int main()应该int main(void)至少符合标准.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有