【C/C++】关于隐式转换·面试题分析
题目
以下两个程序片段A 和B ,问哪个能进入循环?
片段A:
unsigned short i; unsigned short index = 0; for(i=0; i < index-1; i++) { ........ }
片段B:
unsigned short i; unsigned long index = 0; for(i=0; i < index-1; i++) { ........ }
解答
此题主要考虑类型之间的隐式转换问题,答案是B能进入循环
对于片段A:short - int 的结果是int 型的,所以结果是:0<-1,不满足条件;
对于片段B:unsigned long - int 结果是unsigned long 型的,(-1)在内存中的最高位是1,当作unsigned long 类型时为一个很大的正数,所以能进入循环