读书人

c专家编程下的一个有关问题关于类型转

发布时间: 2012-09-04 14:19:30 作者: rapoo

c专家编程上的一个问题关于类型转换

C/C++ code
int array[] = {23,34,12,17,204,99,16};#define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0]))void main(){    int d= -1;    if(d <= TOTAL_ELEMENTS -2)    {        cout<<"successful"<<endl;    }    else    {        cout<<"fail"<<endl;    }}

如上代码会把d转换为unsigned int类型,最后结果为"fail",《C专家编程》上说明ascii c 是优先把所有类型转换为 有符号int类型的,是否有矛盾?

[解决办法]
自动类型转换的规则
double<--float

long

unsigned

int<--char、short
你仔细看整型提升,说比int小的类型一律转换为int,unsigned int显然不在此列。

读书人网 >C语言

热点推荐