may*_*aya 4 c operators type-conversion
如果我们有以下代码:
char x = -1;
x =~x;
Run Code Online (Sandbox Code Playgroud)
在带有MS VS编译器的x86平台上(部分支持C99) - 运行时会发生什么?
据我所知,发生以下情况(如果我错了请纠正我):
实际上发生了很多事情 - 我发现它有点令人困惑.特别是:我对最后一次隐式转换(int到char)的理解是否正确?如果赋值的结果无法存储在char中会发生什么?
确实~x是一种int类型.
char如果char是,那么转换回定义很明确unsigned.当然,如果值在支持的范围内,它也是明确定义的char.
如果char是signed,则转换为~xto char是实现定义的,可能会引发实现定义的信号.
在你的情况下,你有一个2的补码int和2的补码平台char,所以~x被观察为0.
请注意,MSVC并不完全支持任何 C标准,也没有声称.
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |