C++中该死的左右移“<<”“>>”

比赛的时候拿左移右移来当成乘2多少次,除2多少次的快速方法却忽略了范围,导致我们比赛C题狂错还找不到问题。
先看一个测试代码,就明白了。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
    /// int <<
    for(int j=0; j<=100; j++) {
        int i=1;
        cout<<"<< "<<j<<" : "<<(i<<j)<<endl;
    }
    /// long long <<
    cout<<endl<<"now is long long \"<<\""<<endl;
    for(int j=0; j<=100; j++) {
        ll i=1;
        cout<<"<< "<<j<<" : "<<(i<<j)<<endl;
    }
    return 0;
}

实际运行结果是

<< 0 : 1
<< 1 : 2
<< 2 : 4
<< 3 : 8
<< 4 : 16
<< 5 : 32
<< 6 : 64
<< 7 : 128
<< 8 : 256
<< 9 : 512
<< 10 : 1024
<< 11 : 2048
<< 12 : 4096
<< 13 : 8192
<< 14 : 16384
<< 15 : 32768
<< 16 : 65536
<< 17 : 131072
<< 18 : 262144
<< 19 : 524288
<< 20 : 1048576
<< 21 : 2097152
<< 22 : 4194304
<< 23 : 8388608
<< 24 : 16777216
<< 25 : 33554432
<< 26 : 67108864
<< 27 : 134217728
<< 28 : 268435456
<< 29 : 536870912
<< 30 : 1073741824
<< 31 : -2147483648
<< 32 : 1
<< 33 : 2
<< 34 : 4
<< 35 : 8
<< 36 : 16
<< 37 : 32
<< 38 : 64
<< 39 : 128
<< 40 : 256
<< 41 : 512
<< 42 : 1024
<< 43 : 2048
<< 44 : 4096
<< 45 : 8192
<< 46 : 16384
<< 47 : 32768
<< 48 : 65536
<< 49 : 131072
<< 50 : 262144
<< 51 : 524288
<< 52 : 1048576
<< 53 : 2097152
<< 54 : 4194304
<< 55 : 8388608
<< 56 : 16777216
<< 57 : 33554432
<< 58 : 67108864
<< 59 : 134217728
<< 60 : 268435456
<< 61 : 536870912
<< 62 : 1073741824
<< 63 : -2147483648
<< 64 : 1
<< 65 : 2
<< 66 : 4
<< 67 : 8
<< 68 : 16
<< 69 : 32
<< 70 : 64
<< 71 : 128
<< 72 : 256
<< 73 : 512
<< 74 : 1024
<< 75 : 2048
<< 76 : 4096
<< 77 : 8192
<< 78 : 16384
<< 79 : 32768
<< 80 : 65536
<< 81 : 131072
<< 82 : 262144
<< 83 : 524288
<< 84 : 1048576
<< 85 : 2097152
<< 86 : 4194304
<< 87 : 8388608
<< 88 : 16777216
<< 89 : 33554432
<< 90 : 67108864
<< 91 : 134217728
<< 92 : 268435456
<< 93 : 536870912
<< 94 : 1073741824
<< 95 : -2147483648
<< 96 : 1
<< 97 : 2
<< 98 : 4
<< 99 : 8
<< 100 : 16

now is long long "<<"
<< 0 : 1
<< 1 : 2
<< 2 : 4
<< 3 : 8
<< 4 : 16
<< 5 : 32
<< 6 : 64
<< 7 : 128
<< 8 : 256
<< 9 : 512
<< 10 : 1024
<< 11 : 2048
<< 12 : 4096
<< 13 : 8192
<< 14 : 16384
<< 15 : 32768
<< 16 : 65536
<< 17 : 131072
<< 18 : 262144
<< 19 : 524288
<< 20 : 1048576
<< 21 : 2097152
<< 22 : 4194304
<< 23 : 8388608
<< 24 : 16777216
<< 25 : 33554432
<< 26 : 67108864
<< 27 : 134217728
<< 28 : 268435456
<< 29 : 536870912
<< 30 : 1073741824
<< 31 : 2147483648
<< 32 : 4294967296
<< 33 : 8589934592
<< 34 : 17179869184
<< 35 : 34359738368
<< 36 : 68719476736
<< 37 : 137438953472
<< 38 : 274877906944
<< 39 : 549755813888
<< 40 : 1099511627776
<< 41 : 2199023255552
<< 42 : 4398046511104
<< 43 : 8796093022208
<< 44 : 17592186044416
<< 45 : 35184372088832
<< 46 : 70368744177664
<< 47 : 140737488355328
<< 48 : 281474976710656
<< 49 : 562949953421312
<< 50 : 1125899906842624
<< 51 : 2251799813685248
<< 52 : 4503599627370496
<< 53 : 9007199254740992
<< 54 : 18014398509481984
<< 55 : 36028797018963968
<< 56 : 72057594037927936
<< 57 : 144115188075855872
<< 58 : 288230376151711744
<< 59 : 576460752303423488
<< 60 : 1152921504606846976
<< 61 : 2305843009213693952
<< 62 : 4611686018427387904
<< 63 : -9223372036854775808
<< 64 : 1
<< 65 : 2
<< 66 : 4
<< 67 : 8
<< 68 : 16
<< 69 : 32
<< 70 : 64
<< 71 : 128
<< 72 : 256
<< 73 : 512
<< 74 : 1024
<< 75 : 2048
<< 76 : 4096
<< 77 : 8192
<< 78 : 16384
<< 79 : 32768
<< 80 : 65536
<< 81 : 131072
<< 82 : 262144
<< 83 : 524288
<< 84 : 1048576
<< 85 : 2097152
<< 86 : 4194304
<< 87 : 8388608
<< 88 : 16777216
<< 89 : 33554432
<< 90 : 67108864
<< 91 : 134217728
<< 92 : 268435456
<< 93 : 536870912
<< 94 : 1073741824
<< 95 : 2147483648
<< 96 : 4294967296
<< 97 : 8589934592
<< 98 : 17179869184
<< 99 : 34359738368
<< 100 : 68719476736
posted @ 2018-09-24 11:04  零原创  阅读(557)  评论(0编辑  收藏  举报