小编Luk*_*kas的帖子

未经检查的 uint 的 C# 溢出行为

我一直在https://dotnetfiddle.net/测试此代码:

using System;
                
public class Program
{
    const float scale = 64 * 1024;

    public static void Main()
    {
        Console.WriteLine(unchecked((uint)(ulong)(1.2 * scale * scale + 1.5 * scale)));
        Console.WriteLine(unchecked((uint)(ulong)(scale* scale + 7)));
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我用 .NET 4.7.2 编译我得到

859091763

7

但是如果我使用 Roslyn 或 .NET Core,我会得到

859091763

0

为什么会发生这种情况?

.net c# overflow uint roslyn

10
推荐指数
1
解决办法
302
查看次数

标签 统计

.net ×1

c# ×1

overflow ×1

roslyn ×1

uint ×1