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;
}
为什么这样??代码中的问题是什么?
答案 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