整型的赋值超出该类型的取值范围

对于unsigned类型来说,编译器必须调整越界值使其满足要求。编译器会将该值对unsigned类型的可能取值数目求模,然后取所得值。

例如:8位的unsigned char,取值范围是0~255,如果赋值超出这个范围的值,那么编译器将会取该值对256取模后的值。

    

此外,C++中,把负数赋值给unsigned对象是完全合法的,其结果是该负数对该类型的取值个数求模后的值。

    

    

对于将超过取值范围的值赋给signed类型时,由编译器决定实际赋的值。在实际操作中,很多的编译器处理signed类型的方式和unsigned类型类似。

 

注意:取模其实就是截取低xxx位,对于8位的unsigned char来说,如果超出范围,即截取低8位。

posted @ 2015-03-29 10:57  momo_Unique  阅读(575)  评论(0编辑  收藏  举报