2013-03-02 13 views
-3
int main() { int i; scanf("%i",&i); printf("%d",i); } 

如果我正在i/p为-077,我得到-63预期转换成十进制,但如果i/p是-078那么o/p为-7。八路使用%我

你能解释我在做什么错吗?

+3

你会期望它对无效数字做什么? – 2013-03-02 19:13:59

回答

2

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

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

1

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