【问题标题】:In PHP, why does `print 08+"51";` give 51?在 PHP 中,为什么 `print 08+"51";` 给出 51?
【发布时间】:2018-07-09 14:28:16
【问题描述】:

在 PHP 中,我尝试过这段代码 print 08+"51"; 但我不知道为什么它给了51,而print 07+"51";给了58?

【问题讨论】:

  • php.net/manual/en/language.types.integer.php:$a = 0123; // octal number (equivalent to 83 decimal)
  • 投票按钮表明“这个问题显示了研究成果”。没有明显的研究努力,但它得到了 4 票支持。
  • 08 在八进制中不存在
  • 你怎么没有得到致命错误?
  • @DavidPartyka:因为08转为0,而“51”转为51,所以给出0+51 = 51

标签: php math addition


【解决方案1】:

因为当整数以 0 开头时,您使用的是八进制。 08 不是有效的八进制数,因此它转换为零。 0 + 51(因为“51”通过类型杂耍被转换为整数)等于 51。

【讨论】:

  • 应该是“转换成整数”而不是“转换成字符串”——它已经是字符串了
  • 好的。多么简单!谢谢
  • @johannes 你是对的。我在中途改变了我想解释的方式,最后两者都得到了一点。固定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-02
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
相关资源
最近更新 更多