揭开整数中前导零的谜团
您在 Visual Studio 2013 中观察到的行为反映了在 Visual Studio 2013 中表示整数的规则不同的基数,特别是十进制、八进制和十六进制。
整数C 中的文字可以以零开头来表示各种基数:
在你的例如:
尝试分配 08 时编译器错误是因为 8 不是有效的八进制数字。它仅在 7 以内有效。
从 00016 转换为 14 的原因是八进制文字中的前导零表示该数字以 8 为基数。编译器通过将每个数字相乘来执行转换按其相应的 8 次幂,从右到左开始。
对于 00016,这意味着:
0 * 8^4 0 * 8^3 0 * 8^2 1 * 8^1 6 * 8^0 = 14
因此,您观察到的行为是编译器基于以下内容解释数值的结果它们的前导数字以及 C 中不同碱基的规则。
以上是为什么前导零会改变 C 中的整数值?的详细内容。更多信息请关注PHP中文网其他相关文章!