gpt4 book ai didi

c# - 试图在编译时分配一个大数字

转载 作者:行者123 更新时间:2023-11-30 14:00:43 25 4
gpt4 key购买 nike

下面两个操作是一样的。但是,MaxValues1 不会编译,因为“检查模式下的编译时操作溢出”。有人可以解释编译器发生了什么,以及我如何在不必像 MaxValues2 那样使用硬编码值的情况下绕过它吗?

public const ulong MaxValues1 = 0xFFFF * 0xFFFF * 0xFFFF;

public const ulong MaxValues2 = 0xFFFD0002FFFF;

最佳答案

要获得无符号文字,请添加 u 后缀,并使它们成为 long l 后缀。即你需要 ul

如果您真的想要溢出行为,您可以添加 unchecked 以获得 unchecked(0xFFFF * 0xFFFF * 0xFFFF) 但这可能不是您想要的。你得到溢出是因为文字被解释为 Int32 而不是 ulong,并且 0xFFFF * 0xFFFF * 0xFFFF 不适合 32 位整数,因为它大约是 2^48。

public const ulong MaxValues1 = 0xFFFFul * 0xFFFFul * 0xFFFFul;

关于c# - 试图在编译时分配一个大数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10021046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com