奇怪了,unsigned int的数<<9,返回long long类型的结果出错呢?
long long q;
unsigned int dw=21928725;
q = (long long)dw<<(long long)9;
printf("dw:%u, q:%lld\n", dw, q);
显示的结果是 dw :21928725, q: -1657394688
我用计算器算出来是q: 11125107200
long long 8 none (but equivalent to __int64) –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
请问为什么会出错呢?谢谢指点一二了 :)