c专家编程下的一个有关问题关于类型转换
c专家编程上的一个问题关于类型转换C/C++ codeint array[] {23,34,12,17,204,99,16}#define TOTAL_ELEM
c专家编程上的一个问题关于类型转换
C/C++ codeint 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显然不在此列。