Pet*_*r W 6 c int casting char
快速问题:因为int是2个字节而char是1个字节,所以我想在2个char变量中存储一个int变量.(比如第1 - 8位进入第一个char,第9-16位进入第二个char).使用C作为编程语言.
我怎样才能做到这一点?会是这样的:
int i = 30543;
char c1 = (char) i;
char c2 = (char) (i>>8);
Run Code Online (Sandbox Code Playgroud)
做这个工作?
我无法找到将一个int转换为char只会丢掉9-16位.
这是从 c11 草案 n1570 中提取的
6.5.4 强制转换运算符
- 如果表达式值的表示范围或精度大于强制转换命名的类型 (6.3.1.8) 所需的范围或精度,则强制转换指定转换,即使表达式的类型与命名类型相同并删除任何额外的范围和精度。
因此,强制转换确实会删除额外的位,但无论如何都不需要它,因为该值将隐式转换为char,并且上述内容无论如何都适用。