fetich
V2EX  ›  问与答

刚开始看《C++ Primer》,有句话不理解。。。

  •  
  •   fetich · Jan 8, 2015 · 4115 views
    This topic created in 4320 days ago, the information mentioned may be changed or developed.

    If your data values are larger than the minimum guaranteed size of an int, then use long long.

    这句话中的「minimun」如何理解,还有书中的表中所列short int 16bit, int 16bit, long int 32bit, 可是书上又出现了「long often has the same size as int」,这又是怎么回事?

    10 replies  •  2015-01-09 10:33:47 +08:00
    wy315700
    wy315700
    Jan 8, 2015❤️1
    1
    32位系统 long和int一样 都是32位

    Linux下 64位的时候 long是64位,int是32位
    windows两个都是32位


    所以是often same

    然后如果你要用64位的 那就用long long
    fetich
    fetich
    OP
    Jan 8, 2015
    2
    @wy315700 哦哦,那「minimum」是不是指不同机器、不同系统对同一算术类型有不同的位数定义,但是不能小于minimum size,这样?
    chchwy
    chchwy
    Jan 8, 2015❤️1
    3
    C++ 標準 int 只規定 16 bits 以上
    @fetich 所以你的理解沒錯.
    fetich
    fetich
    OP
    Jan 8, 2015
    4
    @wy315700
    @chchwy
    感谢两位的解答。;-)
    Earthman
    Earthman
    Jan 8, 2015
    5
    直接 int64_t 之类的比较好
    zeroten
    zeroten
    Jan 8, 2015
    6
    我记得C中,short<=int<=long,具体是多少由实现决定
    xylophone21
    xylophone21
    Jan 8, 2015❤️1
    7
    minimum guaranteed size
    直译过来就是
    有保障的最小大小

    比如int,按规定最小是16,但有些平台是16有些是32有些是64.
    这个16就是minimum guaranteed size。
    为了保证你代码的兼容性,你就只能当他是16用,超过了就只有用long long才有保障了。

    或者有公司给你开个offer说给16K以上,你想买房就要算好扣除生活费后16K够你月供。
    虽然公司最终可能给你32K甚至64K,但万一他真的只给你16K呢?
    fetich
    fetich
    OP
    Jan 8, 2015
    8
    @xylophone21
    讲解的很是清晰,举例很贴切,感谢。
    bdomne
    bdomne
    Jan 8, 2015
    9
    和具体编译器有关
    最直接通过sizeof(long)、sizeof(int)、sizeof(short)
    占多少字节就知道了
    PS:sizeof是操作符,不是函数
    jyz19880823
    jyz19880823
    Jan 9, 2015
    10
    玩 dota 的喜欢 double
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1896 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 09:03 · PVG 17:03 · LAX 01:03 · JFK 04:03
    ♥ Do have faith in what you're doing.