下面的打印是true,还是false?
if(-1L > 1UL) {
printf("-1L > 1UL is true/n");
} else {
printf("-1L > 1UL is false/n");
}
很多人都能够正确回答,但是,也有人会回答错误。
根据整型提升的原则,signed long被提升成为unsigned long,-1L转化成一个很大的正数。
其实,如果在实际的使用中,我们最好还是要避免这种混淆的比较,使用相同的类型来进行转化。
如果要使用不同的类型比较,直接使用强制类型转化来明确。