如何将x中的多字符常量转换为整数?
我试图例如'13'为('3' + '1' << 3),但它不能正常工作.我不是说"0123",但是'0123'.它编译,但我不知道编译器打印时如何获得八进制结果6014231063.我不是在寻找atoi哪个只是将其转换为现在的数字.例如,int x = '1'将以十进制数字系统打印49.现在我感兴趣的是什么会打印int x = '0123'.这项任务来自编程竞赛,所以答案不应该是意外行为.
int main(void) {
int x = '0123';
printf("%o\n", x);
printf("%d\n", x >> 24);
printf("%d\n", x << 8 >> 24);
printf("%d\n", x & 0xff);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如何在C中将多字符常量转换为整数?
'0123'在一个int.
int x = '0123';
Run Code Online (Sandbox Code Playgroud)
'0123'是一个字符常数.在C中,这是常量的一种形式,它具有类型int.它很少使用,因为它的值是实现定义的.取决于字节顺序和字符编码(例如ASCII),通常如下:
(('0'*256 + '1')*256 + `2`)*256 + '3' = 858927408 = 0x33323130
(('3'*256 + '2')*256 + `1`)*256 + '0' = 808530483 = 0x30313233
Run Code Online (Sandbox Code Playgroud)
此外:用它编写有用的可移植代码是一项挑战.当使用超过1个字符时,许多编码样式禁止它.