iro*_*man -2 c++ bit-manipulation bit-shift bitwise-operators c++11
当我们运行以下代码时,为什么1<<31打印18446744071562067968输出?
#include<iostream>
using namespace std;
int main(){
unsigned long long int i = 1<<31;
cout<<i; // this prints 18446744071562067968
}
Run Code Online (Sandbox Code Playgroud)
120*_*arm 15
1是a signed int,在你的系统上是32位. 1 << 31导致溢出,并且是负数(0x80000000).当转换为64位时unsigned long long,这将被转换为ULL值,即转换为ULL值0xFFFFFFFF80000000,或者您看到的大十进制数.
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |