Mas*_*son 2 c++ type-conversion
signed char a = 128;
假设一个字节是8位,这是未定义的吗?
我所知道的是,将超出范围的值分配给有符号类型是未定义的,但 Bjarne Stroustrup 在 C++ 编程语言中说,如果我将整数 255 分配给 8 位字节机器上的 char,其中 char 是有符号的结果是-1。
这是未定义的吗?
不。
我所知道的是,将超出范围的值分配给有符号类型是未定义的
也没有。
控制这一点的规则是整数类型之间的转换。转换是为了初始化还是赋值并不重要。
当将整数值转换为有符号整数类型时,如果结果不可表示,则:
在当前标准 C++17 中:结果值将由实现定义。
在即将推出的标准 C++20中:该值将与原始值模 2 N一致,其中 N 是目标类型的宽度(就像无符号整数一样)。-1 与 255 模 2 8全等。
请注意,与转换不同,有符号算术溢出的行为是未定义的。
| 归档时间: |
|
| 查看次数: |
555 次 |
| 最近记录: |