在C++中,我们可以signed char和unsigned char那些同样大小,但持不同范围的值.
在以下代码中:
signed char signedChar = -10;
unsigned char unsignedChar = static_cast<unsigned char>( signedChar );
signedChar = static_cast<signed char>( unsignedChar );
Run Code Online (Sandbox Code Playgroud)
signed char无论其原始价值是多少,它都会保留其价值?
AnT*_*AnT 10
不,没有这样的保证.从转换signed char到unsigned char是良好定义的,如在C++(和C)所有签署到无符号整数转换是.但是,转换的结果很容易变得超出原始签名类型的范围(将在您的示例中出现-10).
-反向转换的结果unsigned char到signed char-在这种情况下是实现定义的,如在C++(和C)中的所有溢流无符号到符号整数转换是.这意味着无法仅从语言规则中预测结果.
通常,您应该期望实现"定义"它以便signed char恢复原始值.但语言并不能保证这一点.
| 归档时间: |
|
| 查看次数: |
3492 次 |
| 最近记录: |