[求教]一个变量赋值的问题
vb.net吧
全部回复
仅看楼主
level 1
dim a as uint32=&H80000000 '提示"常量表达式无法在类型uinteger中表示"
dim a as uint32=2147483648 '这样写就不会提示错误
实际上给a赋的值都是一样的
请教大神,这是何故
2017年07月31日 06点07分 1
level 11
2017年07月31日 09点07分 2
level 11
一查就有了,用不着来问[滑稽]
2017年07月31日 09点07分 3
level 11
Dim a As UInteger = &H80000000UI
vb.net中要加后缀UI
2017年07月31日 09点07分 4
level 11
大于等于&h8000000的值,需要在后面加一个后缀UI,&h8000000UI。同样,ulong类型也是这样。但是,很奇怪的是,ushort类型没有这个问题。
我在网上看到的一个说法是&h会返回的是这个有符号的整数,但是好像没啥说服力,行为小于&h80000000的数不需要加UI后缀。
另外对于&h看下图
2017年07月31日 09点07分 5
level 11
手机拍的,图片就呵呵吧,想看具体的,在帮助文档搜索 &h就能看到
2017年07月31日 09点07分 6
level 11
2017年07月31日 10点07分 7
level 11
看了下面的结果,&h返回的是有符号的整数,确实是这样。
有一个问题,你必须要注意到 &H80000000不等于2147483648,而是等于-2147483648。
注意到上面的,就能明白为啥
Dim a As UInteger = &H80000000 不行啦,因为 &H80000000=-2147483648超出了UInteger的范围;
&H80000000UI 实际上是&H80000000→ -2147483648,然后用 UI 后缀把 -2147483648强制转换成了 2147483648。
下面有意思的转换,你可以瞧瞧
2017年07月31日 12点07分 10
level 1
@闪星2 @y877517032
谢谢两位的详尽回答,受益匪浅,感激不尽
2017年07月31日 14点07分 11
1