这段代码做了什么(C)

时间:2015-11-06 09:37:56

标签: c arrays

我有个问我的问题,简单地说,代码是做什么的?

#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;
}

答案:

A: arr是一个给定的数组,有2N偶数和一个奇数,程序将打印奇数

B: arr是一个给定的数组,其中N对数字具有相等的字节,一对数字具有不同的字节数,程序将打印此数字

C: arr是一个给定的数组,有N对相等数字和一对不同,程序将打印不同的数字。

D: arr是一个给定的数组,N对数字除以8完全没有商,一个数小于8,程序将打印此数字。

非常感谢!

2 个答案:

答案 0 :(得分:2)

作为C,代码是垃圾! https://maps.googleapis.com/maps/api/geocode/json?latlng=" + latitude + "," + longitude + "&sensor=false 不起作用,#define在使用前未初始化,循环仅涵盖第一个arr元素(而不是N)。

考虑到这一点,这些问题没有意义。作为陈述,他们都是假的。

答案 1 :(得分:1)

假设C是你的语言,这段代码很垃圾。

#define N(100)

不会编译,

#define N (100)

是必要的。

进一步的观点:

  1. 假设您修复了#define中的错误,该数组有201个元素。
  2. 它是单元化的,用它来做东西就是调用UB
  3. 没有任何答案选择有意义。
  4. 循环只覆盖前100个元素,这些元素全部初始化为0,其余元素未初始化。