为啥没有打印?该怎么解决
为啥没有打印?C/C++ code#include stdio.h#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))i
为啥没有打印?
C/C++ code#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]); return 0;}
为啥没有打印数组的值?
[解决办法]bool bRes = (d <= TOTAL_ELEMENTS - 2);
bRes应该等于false
[解决办法]宏定义只是替换
sizeof(array) 的返回值类型是 size_t即是unsigned int,类型隐式转换,-1 是一个很大 unsigned int
#define TOTAL_ELEMENTS (int) (sizeof(array1) / sizeof(array1[0]))
[解决办法]《C专家编程》有说到这个问题。http://ishare.iask.sina.com.cn/f/9256276.html?from=isnom在这电子书的29页。
当 d <= TOTAL_ELEMENTS - 2 进行比较时。会把d自动提升为unsigned int 类型。所以出错了。