douzhang1115 2017-02-14 21:55
浏览 27
已采纳

为什么不同导致相同的操作? PHP e C#

I have the following operation in PHP:

24733 * 0x41c64e6d + 0x6073;

...and the result is: 27293242579276

With the same logic, I do the same operation in C#:

24733 * 0x41c64e6d + 0x6073;

But the result is: -1274586804

OMG, why?

  • 写回答

2条回答 默认 最新

  • dpj775835868 2017-02-14 22:02
    关注

    by default c# treats number as int when no explicit cast is specified.

    so 24733 is treated as int.

    int x int + int = int
    

    and Max int is 2147483647 which is way smaller than 27293242579276. This resulted in integer overflow.

    To solve the problem, use a type with higher number of bits such as decimal

    you can append a letter "m" at the end of the number to tell c# you want it to be a decimal like 24733m * 0x41c64e6d + 0x6073

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路