C 和 Arduino 中的有趣划分

Thi*_*nda 2 c c# arduino division

TL; DR 为什么

   printf("%d\n", 042/10  );
Run Code Online (Sandbox Code Playgroud)

返回 3 而不是 4?

嘿,实际上我在使用 Arduino IDE 时确实有这个疑问,但后来只是为了验证我确实在另一个 C 编译器中尝试过。问题中的代码在这里:

Serial.println(42/10);
Run Code Online (Sandbox Code Playgroud)

这工作正常,显示 4。这是有趣的一点

Serial.println(042/10);
Run Code Online (Sandbox Code Playgroud)

这个回报3。

这似乎非常基本,但我找不到合适的帖子来回答这个问题。提前致谢!

Del*_*a_G 7

前导零表示它是八进制。042 等于十进制的 34。34/10 确实是 3 使用 int 数学。


小智 5

042printf("%d\n", 042/10 );被解释为一个八进制值:

042(十月)= 34(十二月)

所以你的部门实际上是:(int)34/10= 3