zoukankan      html  css  js  c++  java
  • C语言的limits.h文件

    我们知道在C语言的signed int类型在32位编译器下占据4字节,即32位。范围是从2^31——2^31 - 1。unsigned int也是占据32位,范围是从0——2^32 - 1。字面常量2147483648被编译器认为是unsigned long(C99标准把除了unsigned char以外的所有的无符号整形统一为了unsigned long)我们可以看到limits.h头文件里面的INT_MIN被定义为了 (-2147483647 - 1),而不是-21474836478。这两者差别是非常巨大的。-21474836478是分阶段处理的,但是处理之后仍然是无符号类型。

    但是INT_MIN被宏定义为#define INT_MIN     (-2147483647 - 1),意味着做完这些操作以后,该类型仍然是signed int。

    这是微软官方给出的解释,因此我们使用最小整数最好是使用limits.h里面的INT_MIN。

    但是GCC给出的结果和VS2017是不一样的,GCC可以编译通过,但是判断出的值为假。看来VS果真是宇宙第一IDE啊!它能尽可能的避免一些错误。当然,也由衷的佩服微软做的文档,这个真的是无法挑剔。

  • 相关阅读:
    斜率优化dp学习
    拓扑排序
    P2486 [SDOI2011]染色 区间合并+树链剖分(加深对线段树的理解)
    网络流24题!!!!
    费用流板子
    网络流dinic板子
    小花梨的数组
    C. 小花梨判连通
    splay树
    hdu4467 graph
  • 原文地址:https://www.cnblogs.com/zy666/p/10504310.html
Copyright © 2011-2022 走看看