首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为啥没有打印?该怎么解决

2012-04-10 
为啥没有打印?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 类型。所以出错了。

热点排行