使用%i进行八进制到十进制转换

时间:2013-03-02 19:11:57

标签: c

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

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

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

2 个答案:

答案 0 :(得分:2)

  

但是如果i / p是-078那么o / p是-7。你能解释一下???

转换在第一个字符处停止,该字符在使用的基数中不是有效数字。由于数字以'0'开头,而不是'x''X',因此所选的基数为8. '8'不是八进制数字。因此,转化仅消耗"07"

答案 1 :(得分:1)

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