模数运算符使用前导零给出不同的结果

Kos*_*tos 9 c++ modulo

为什么:

int test() {
    return 00101 % 10;
}
Run Code Online (Sandbox Code Playgroud)

返回5,同时:

int test() {
    return 101 % 10;
}
Run Code Online (Sandbox Code Playgroud)

回来了1?我想不出一个解释.

Yu *_*Hao 23

0like 开头的整数文字

00101
Run Code Online (Sandbox Code Playgroud)

实际上是八进制常数.

  • 这是有史以来最令人困惑的约定,它与人类看待数字的方式完全矛盾。 (2认同)
  • @KosmasKatsoulotos你是如何得到这些价值观的?除了处理文字之外,你不会遇到这个问题. (2认同)
  • 如果你`fscanf`或其他什么,格式字符串中的`%d`将忽略/ strip /解释为前导零的十进制.(`%o`是八进制). (2认同)

Rus*_*tam 5

00101是八进制值,65以十进制表示,因此返回5.