0

以下 C 程序的预期输出是打印数组中的元素。但是当实际运行时,它并没有这样做。

  #include<stdio.h>

  #define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
  int array[] = {23,34,12,17,204,99,16};

  int main()
  {
      int d;

      for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
          printf("%d\n",array[d+1]);//printing the array

      return 0;
  }//looks simple but no result

怎么了?为什么我没有得到任何输出?

4

1 回答 1

10

在比较中

d <= (TOTAL_ELEMENTS-2)

TOTAL_ELEMENTS有类型size_t所以d被转换为无符号。例如,sizeof(size_t)==4这使得测试

0xffffffff < 5

失败,导致循环退出。

如果你真的想从 -1 开始你的循环计数器

d <= (int)(TOTAL_ELEMENTS-2)

会工作

于 2013-08-20T06:53:11.217 回答