程序未显示预期输出

时间:2013-08-20 06:49:05

标签: c arrays

以下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

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

1 个答案:

答案 0 :(得分:10)

在比较中

d <= (TOTAL_ELEMENTS-2)

TOTAL_ELEMENTS的类型为size_t,因此d会转换为无符号。比方说,sizeof(size_t)==4,这就是测试

0xffffffff < 5

失败,导致循环退出。

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

d <= (int)(TOTAL_ELEMENTS-2)

会起作用