-3
int main() { int i; scanf("%i",&i); printf("%d",i); }

如果我取i/p为 -077 ,我按预期得到 -63,但如果i/p是 -078o/p则为 -7。

你能解释一下我做错了什么吗?

4

2 回答 2

2

但如果 i/p 为 -078,则 o/p 为 -7。你能解释一下吗???

转换在使用的基数中第一个不是有效数字的字符处停止。由于数字以 a 开头'0',而不是直接跟在'x'or之后'X',因此选择的基数是 8。'8'不是八进制数字。因此转换只消耗"07".

于 2013-03-02T19:13:09.050 回答
1

那是因为 8 不是八进制表示法中的有效数字。使用 0-7。

于 2013-03-02T19:13:52.440 回答