把程序做一下修改进行对比:
定義long型变量开设的是32位整形定义long long型开设64位整形
在进行a=;的赋值时,程序会将上边数据的低32位赋值给变量a
结果a相当于被赋值成了十六进制数904533ff(高32位被丢掉了)即十进制,
这个数已经超过了32位整形能表示的最大正数范围所以最高位被当成符号位的输出结果
在进行b的赋值时,所有64位數据都赋值给了b但这个数仍然超出了64位整形能表示的
最大正整数范围,如果按照有符号数输出为-9551617而当成无符号数输出
你的意思是什么?没看明白要输出哪样的数字上边程序输出的不是你想要的吗?
long long 能够表示的范围比long的范围要大。你的那个数字已经超出了long的范围了泹是没有超出long long的范围,所以可以正常输出不知道对你有帮助没。。
可是long long的输出还是不对是一个7开头的大概有10位的数字
额,你的数都囿20多位了。已经不在表示范围之内了吧,要是用java写的话就不会有问题,c++表示的范围有限,或者你只能用字符数组了