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啊!它能尽可能的避免一些错误。当然,也由衷的佩服微软做的文档,这个真的是无法挑剔。

  • 相关阅读:
    Spring Boot
    AWS DynamoDB
    VBA读excel写xml
    WebSocket API 学习
    故障排除 Mybatis ORA-01000 和 本地缓存问题
    Java基础
    Java Tutorials Lambda表达式 翻译
    在代理环境中构建maven环境
    Pom
    我的JAVA笔记
  • 原文地址:https://www.cnblogs.com/zy666/p/10504310.html
Copyright © 2011-2022 走看看