为什么会出现以下情况:
int test() {
return 00101 % 10;
}
返回5
,当:
int test() {
return 101 % 10;
}
返回 1
?我无法想到解释。
以0
开头的整数字面量,例如
00101
实际上是一个八进制常量。
00101
是八进制的数值,它在十进制下是 65
,因此返回值为5
。
00101是八进制,相当于十进制的65,这就是为什么模运算符总是给我们5的原因。 您可以在此链接上进行八进制转十进制转换 http://www.rapidtables.com/convert/number/octal-to-decimal.htm
fscanf
或其他函数,格式字符串中的%d
将忽略/删除/解释前导零(十进制),而%o
则表示八进制。 - OJFord