【发布时间】:2015-12-09 01:23:27
【问题描述】:
我正在学校学习 C,我有这个问题,但我无法解决它。
下面的代码是做什么的?
#define N (100)
int main(void)
{
unsigned short i = 0;
unsigned long arr[2*N + 1];
unsigned long a = 0;
for (i = 0 ; i < N ; ++i) {
a ^= arr[i];
}
printf("%lu", a);
return 0;
}
如果您能向我解释一下,那将非常有帮助!
谢谢!
【问题讨论】:
-
尽可能循环
-
考虑到
arr未初始化导致未定义行为,几乎任何事情都可能发生。 -
这不是“做我的家庭作业网站”。如果你有问题,你应该回顾你学到的东西或问你的老师。并告诉她在不需要的情况下使用
short作为数组索引是一个非常糟糕的主意。正确的类型是size_t。 -
100周围的括号是多余的,顺便说一句。 -
^是按位异或运算符;x ^= y是x = x ^ y的简写。你应该能够从那里弄清楚事情。注意arr的内容是indeterminate,所以无论你得到什么结果,它都不会很有意义。