自燃物 2014-11-21 15:48 采纳率: 100%
浏览 1697
已采纳

php中define带入表达式问题

define('GW_MAXFILESIZE', '32768*10');
echo GW_MAXFILESIZE/1;

为什么输出是32768而不是327680呢?
读书少……

一个猜想,php不像C是原样替换,先发生了类型转换,遇到「*」号就直接忽略后面的了。

若如此,那么
define('GW_MAXFILESIZE', '32768*10');
if(GW_MAXFILESIZE>0) {
//whatever
}

又如何处理常量呢?

谢谢

  • 写回答

1条回答

  • xuzuning 2014-11-22 02:00
    关注

    define('GW_MAXFILESIZE', '32768*10');
    echo GW_MAXFILESIZE;
    输出 32768*10

    define('GW_MAXFILESIZE', 32768*10);
    echo GW_MAXFILESIZE;
    才会输出 327680
    字符串中的表达式是不会自行运算的

    C语言中也是一样
    #define MY "100*3"
    printf("%是",MY);
    输出 100*3

    #define MY 100*3
    printf("%d",MY);
    输出 300

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题