int变量前导零?

| 为什么跟踪结果为34? 它似乎与八进制数字无关。
intval(042);
    
已邀请:
        但是前导0确实表示多种语言的八进制,就像这里的情况。     
        它确实与八进制数有关,
042
被解释为八进制数
42
,即
4 * 8 + 2 = 34
。 请注意,八进制解释是在加载PHP脚本时解析数字文字时发生的。它与
intval()
无关,ѭ4here在这里不执行任何操作,因为该值已经是整数。 八进制解释仅在数字文字中发生,而在将字符串强制转换为整数时则不会发生:
intval(042)   // == 34
intval(\'042\') // == 42
(int)\'042\'    // == 42
    
        在PHP中,将前导0的数字读取为八进制数字。 因此042被读取为八进制数。 intval()函数将其转换为十进制数34。 因此,浏览器输出为34。     
        这只是函数定义的方式。前导零是将其解析为八进制数的指令,类似于前缀0x如何表示十六进制。有关更多信息,请参见文档。     
        在将此函数传递给带有前导\“ 0 \”的字符串值时要小心。如果将其赋予\“ 042 \”,它将把它当作BASE 8-9并将其转换为十进制值,默认为十进制。 请通过这个     

要回复问题请先登录注册