__int64 t=1<<k;
本来t有64位,k可以取(0-62),但这里因为编译器会把常量1当成int处理,所以当k>30就会出现问题。
正确的写法是 __int64 t=(__int64)1<<k;
本文介绍了一个关于64位整数左移操作的常见错误及其正确做法,并提供了一个使用64位整数解决线性方程问题的示例代码。文章详细解释了为何在某些情况下直接进行左移操作会导致问题,并给出了正确的解决方案。
__int64 t=1<<k;
本来t有64位,k可以取(0-62),但这里因为编译器会把常量1当成int处理,所以当k>30就会出现问题。
正确的写法是 __int64 t=(__int64)1<<k;

被折叠的 条评论
为什么被折叠?