In C#:
0x80000000==2147483648 //outputs True
在 VB.NET 中:
&H80000000=2147483648 'outputs False
这怎么可能?
这与语言背后的历史有关。
C# 始终支持无符号整数。您使用的值太大int因此编译器会选择下一个可以正确表示该值的类型。这是uint对彼此而言。
VB.NET 直到版本 8 (.NET 2.0) 才获得无符号整数支持。因此,传统上,编译器被迫选择 Long 作为 2147483648 文字的类型。然而,十六进制文字的规则有所不同,它传统上支持指定负值的位模式(请参阅语言规范中的第 2.4.2 节)。因此 &H80000000 是 Integer 类型的文字,其值为 -2147483648,而 2147483648 是 Long。因此不匹配。
如果您认为 VB.NET 是一种古怪的语言,那么我会邀请您阅读这篇文章 https://stackoverflow.com/a/16459680/17034 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)