【发布时间】:2016-06-24 11:12:35
【问题描述】:
如何将 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;
}
【问题讨论】:
-
int x = '0123';虽然晦涩难懂,但不是您想要的 -->int x = 123; -
“它不能正常工作。”缺乏细节。你看到了什么,你期待什么?当我运行代码时,我得到了我所看到的可能和你一样,也可能不一样。
-
...或者
int test = atoi("0123"); -
@WeatherVane 老实说,我认为
int x = '0123';甚至不会编译。确实晦涩难懂。 -
您好,这是多字符常量。我的意思不是“0123”,而是“0123”。它可以编译,但我不知道如何将其转换为 int。我不是在寻找仅将其转换为当前数字的 atoi。例如 int x = '1' 将在十进制数字系统中打印 49。现在我对打印 int x = '0123' 感兴趣。答案是八进制数字系统中的 6014231063,但是如何得到呢?这是来自一场编程比赛。