zoukankan      html  css  js  c++  java
  • C语言整数的取值范围


    整数是我们生活中常用的数据类型,也是编程中常用的一种数据,C语言使用int关键字来定义整数变量(int是 integer 的简写)。

    在定义变量的时候,可以加signed、unsigned、short和long四种修饰符。

    signed:有符号的,可以表示正数和负数。

    unsigned:无符号的,只能表示正数,例如数组的下标、人的身高等。

    short:短的,现在主流的64位操作系统下,整数占用内存4个字节,使用 4
    个字节保存较小的整数绰绰有余,会空闲出两个字节来,这些字节就白白浪费掉了。在C语言被发明的早期,或者在单片机和嵌入式系统中,内存都是非常稀缺的资源,所有的程序都在尽可能节省内存。

    long:长的,更长的整数。

    1、整数的取值范围

    整数的取值范围与计算机操作系统和C语言编译器有关,没有一个固定的数值,我们可以根据它占用的内存大小来推断它的取值范围。

    一个字节有8个位,表示的数据的取值范围是28-1,即255。

    如果占用的内存是两个字节,无符号型取值范围是28ⅹ28-1。

    如果占用的内存是四个字节,无符号型取值范围是28ⅹ28ⅹ28ⅹ28-1。

    如果占用的内存是八个字节,无符号型取值范围是28ⅹ28ⅹ28ⅹ28ⅹ28ⅹ28ⅹ28ⅹ28-1。

    如果是有符号,取值范围减半,因为符号占一个位。

    下面用一个示例代码来测试各种整数占用内存的大小。

    示例(book60.c)

    /*
     * 程序名:book60.c,此程序演示整数占用内存的大小和取值范围。
     * 作者:C语言技术网(www.freecplus.net) 日期:20190525
    */
    #include <stdio.h>
    
    int main()
    {
      short si;   // 短整数
      int   ii;   // 整数
      long  li;   // 长整数
    
      printf("sizeof short is %d
    ",sizeof(short));
      printf("sizeof int is %d
    ",sizeof(int));
      printf("sizeof long is %d
    ",sizeof(long));
    }
    

    运行效果

    在这里插入图片描述

    sizeof是C语言中保留关键字,是一种运算符,不是函数,sizeof实际上是获取了数据在内存中所占用的存储空间,以字节为单位。

    int ii;       // sizeof(int)和sizeof(ii)都可以。
    

    根据book60.c的测试结果,我们可以得到各种整数的取值范围。

    类型简写 类型全称 长度 取值范围
    short [signed] short [int] 2字节 -32768~32767
    unsigned short unsigned short [int] 2字节 0~65535
    int [signed] int 4字节 -2147483648~2147483647
    unsigned int unsigned [int] 4字节 0~4294967295
    long [signed] long [int] 8字节 -9223372036854775808~ 9223372036854775807
    unsigned long unsigned long [int] 8字节 0~18446744073709551615

    注意:

    1)计算机用最高位1位来表达符号,unsigned修饰过的正整数不需要符号位,在表达正整数的时候比signed修饰的正整数取值大一倍。

    2)在写程序的时候,上表中括号[]的单词可以省略不书写。

    3)在写程序的时候,给整数变量赋值不能超出变量的取值范围,编译的时候会出现类似以下的错误,程序运行也可能产生不可预后的后果。

    在这里插入图片描述

    4)现在计算机的内存不值钱,建议程序员少用short,慎用int,多用long,内存不是问题,程序的稳定高于一切。

    2、版权声明

    C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。

    来源:C语言技术网(www.freecplus.net)

    作者:码农有道

    如果文章有错别字,或者内容有错误,或其他的建议和意见,请您留言指正,非常感谢!!!

  • 相关阅读:
    [SAP HANA] S4HANA XSA 安装常用命令
    [SAP BASIS]SAP 内存管理参数详解
    [SAP BASIS]有用的常用的SAP程序/报表-更新
    [SAP BASIS]激活SAP新功能模块的最实践|更改表结构
    [SAP BASIS]如何在系统拷贝时备份RFC 连接 and partner profile
    [SAP Basis] [TMS Management] 传输导入优化 import transport tunning
    [SAP BASIS]SPAM queue unable to reset after phase IMPORT_PROPER
    B. Obtain Two Zeroes -Codeforces Round 77 (Div. 2)
    B
    F
  • 原文地址:https://www.cnblogs.com/wucongzhou/p/12691855.html
Copyright © 2011-2022 走看看