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

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

2012-09-04 
c专家编程上的一个问题关于类型转换C/C++ codeint array[] {23,34,12,17,204,99,16}#define TOTAL_ELEM

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显然不在此列。

热点排行