在编程领域,以零开头的数字可以表现出有趣的行为。让我们使用 Visual Studio 2013 中的示例深入研究具体细节。
考虑以下代码片段:
int i = 07; // i == 7 int i = 16; // i == 16 int i = 00016; // i == 14, why? int i = 05016; // i == 2574, wow ) int i = 08; // compile error, compiler expects octal number...
零前缀数字的特殊处理
编译器对零前缀数字的解释不同,具体取决于context:
00016 和的异常行为05016
赋值 int i = 00016;解析为 i == 14,因为编译器将前导零视为额外的八进制数字,即使这根据 C 标准是无效的。
类似地, int i = 05016;产生 i == 2574,因为编译器将其解释如下:
08 编译错误
以 0 开头后跟 0-7 以外的数字(例如 08)的整数文字会触发编译错误,因为编译器期望它是八进制数,但 8 不是有效的八进制数字。
以上是为什么以零为前缀的数字在 C 中表现异常?的详细内容。更多信息请关注PHP中文网其他相关文章!