为什么下面的同一个c prog有两个输出?

时间:2018-06-17 03:20:14

标签: c

this.setState({ data: stateCopy });

此处为#include <stdio.h> main() { int n; n+=2; printf("sum=%d", n); return 0; }

另一项计划: -

'Sum'=2

输出#include <stdio.h> main() { int n,a=2; n+=a; printf("sum=%d", n); return 0; }  为什么这样??代码中的问题是什么?

2 个答案:

答案 0 :(得分:3)

这是未定义的行为。在两个片段中使用未初始化的变量(n)会产生意外结果,这意味着运行第一个代码两次可能会产生不同的输出。没有&#34;正确&#34;输出任一代码,但如果您将n设置为两个代码中的特定值,您将开始获得一致的结果。

这是UB(未定义的行为):

main()
{
int n;
printf("sum=%d", n);
return 0;
}

这不是:

main()
{
int n = 0;
printf("sum=%d", n);
return 0;
}

答案 1 :(得分:2)

如果您没有为C中的局部变量赋值,则其值未定义。所以在某些情况下,它会0,某些1,某些,完全不同。你无法知道它会是什么,你永远不应该依赖它。相反,初始化您的局部变量:

int n = 0; // initialization
n += 2;
printf("sum=%d", n); // will always print 2