自燃物 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

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

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料