sty*_*tyx -4 c compiler-construction compiler-errors
我的朋友和我正在争论这段小代码:
#include <stdio.h>
#include <stdio.h>
int foo (int k)
{
int i, n;
for (i = i ? 0 : i, n ^= n; i < sizeof(k) * 8;)
n += k >> i++ & ~-2;
return n;
}
Run Code Online (Sandbox Code Playgroud)
我怀疑它不会被编译,因为它i是未初始化的,但我的朋友们认为它会.你怎么看?
从语法的角度来看,该代码似乎完全有效.所以它应该是可编译的.
但是如果你试图运行它...它有很多未定义的行为,我不再计算了.
这i不是未定义的,它是未初始化的.它在局部变量定义中完美定义.C不是Java,变量不必明确初始化即可使用.