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

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

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

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

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

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

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

 

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

相关文章:

  • 2022-01-24
  • 2021-07-30
  • 2021-09-03
  • 2021-09-26
  • 2021-07-19
  • 2022-12-23
  • 2021-08-04
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-16
  • 2021-06-15
  • 2022-12-23
  • 2021-11-27
相关资源
相似解决方案