Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 了解int存储多长时间?_C++ - Fatal编程技术网

C++ 了解int存储多长时间?

C++ 了解int存储多长时间?,c++,C++,我正在运行以下程序:(URL:) 现在,当我使用N=2^36时,这意味着第36位应该是1,而不是别的,但为什么程序会给我位置31和63呢?我的程序有什么问题吗 我有一个观察结果,如果我们使用N=2^{exp},其中exp>=32,它总是给出设置位为31和63的位置。谁能解释一下为什么会这样 如果int为32位长,11@MikeCAT谢谢你的帮助。@MikeCAT:请不要使用评论部分来获得答案。如果你不想要这个代表,你可以通过赏金来回馈社区。重要的是要知道,并不是所有的转变都有明确的行为。对于一种

我正在运行以下程序:(URL:)

现在,当我使用N=2^36时,这意味着第36位应该是1,而不是别的,但为什么程序会给我位置31和63呢?我的程序有什么问题吗


我有一个观察结果,如果我们使用N=2^{exp},其中exp>=32,它总是给出设置位为31和63的位置。谁能解释一下为什么会这样

如果
int
为32位长,
1
1@MikeCAT谢谢你的帮助。@MikeCAT:请不要使用评论部分来获得答案。如果你不想要这个代表,你可以通过赏金来回馈社区。重要的是要知道,并不是所有的转变都有明确的行为。对于一种类型来说,移位太多,最终会导致行为不明确。
  #include <iostream>
  #include <cmath>
  using namespace std;
  int main()
  {
     long long int N=pow(2, 36);
     cout << N <<endl;
     int count = 0;
     cout << "Positions where bits are set : " << endl;
     for(int j=0; j<sizeof(long long int)*8; ++j){
     if(N&(1<<j)){
        ++count;
        cout << j << endl;
     }
   }
  return 0;
}
 68719476736
 Positions where bits are set : 
 31
 63