问题描述
TL; DR 为什么
printf("%d\n",042/10 );
返回3而不是4?
嘿,所以实际上我在Arduino IDE时确实有这个疑问,但是只是为了验证我是否确实在另一个C编译器中进行了尝试。问题中的代码在这里:
Serial.println(42/10);
这很好,显示4。这很有趣
Serial.println(042/10);
此返回3。
这似乎很基础,但是我找不到合适的帖子来回答这个问题。预先感谢!
解决方法
前导零表示它是八进制。 042等于十进制34。使用int数学,34/10的确是3。
, 042
中的printf("%d\n",042/10 );
被解释为八进制值:
042(十月)= 34(十月)
所以您的部门实际上是:(int)34/10
= 3
Serial.println(042/010);
将输出4
C语言最早出现的词干,八进制数至少比现在更常见(?)。一旦定义,就永远无法更改。