c++:各种数据类型表示的范围

本文介绍了C/C++中各种基本数据类型的存储范围和占用字节数,包括int、short int、long int及其无符号版本,并通过代码示例展示了如何查询这些信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int 有一位是用来存放符号的 表示的范围  :-32768~32767

unsigned int  却没有符号位 所以 表示的范围: 0~65535

[signed]short int 无论是什么编译器 都固定为 16 位 表示范围:-32768~32767

unsigned short[int]无符号短整型:0~65535

unsigned long[int]无符号长整型 : 0~4294967295

[signed] long [int]有符号长整型:-2147483648~2147483647 

要用代码在c,c++里各算一遍,所占字节在两个软件里是不同的
main()
{
  printf("int %dn",sizeof(int));
  printf("short %dn",sizeof(short));
  printf("char %dn",sizeof(char));
  printf("long %dn",sizeof(long));
  printf("point %dn",sizeof(int*));
}
c输出结果分别是2、2、1、4、2,int 占两字节;
c++输出结果分别是4、2、1、4、4,int占4个字节

short int 就是 short

C++标准规定,int占一个机器字长。在32位系统中int占32位,也就是4个字节,而在老式的16位系统中,int占16位,即2个字节。而C++标准中只限制规定short int不能超过int的长度,具体长度的可以由C++编译器的实现厂商自行决定。目前流行的32位C++编译器中,通常int占4字节,short int占2字节。其中short int可以简写为short。类似地,C++标准只限制了long int不得小于int的长度,具体也没有作出限制。

结论 无论何时 short 肯定是占两个字节!


编译器直接查范围

#include <stdio.h> 
#include <limits.h>
#include <float.h>
#include <stdlib.h>
int main(void)
{
    printf("char类型的变量存储值从%d到%d\n", CHAR_MIN, CHAR_MAX);
    printf("unsigned char类型的变量存储值从0到%u\n", UCHAR_MAX);
    printf("short类型的变量存储值从%d到%d\n", SHRT_MIN, SHRT_MAX);
    printf("unsigned short类型的变量存储值从0到%u\n", USHRT_MAX);
    printf("int类型的变量存储值从%d到%d\n", INT_MIN, INT_MAX);
    printf("unsigned int类型的变量存储值从0到%u\n", UINT_MAX);
    printf("long类型的变量存储值从%ld到%ld\n", LONG_MIN, LONG_MAX);
    printf("unsigned long类型的变量存储值从0到%lu\n\n", ULONG_MAX); 
    printf("long long类型的变量存储值从%lld到%lld\n", LLONG_MIN, LLONG_MAX); 
    printf("unsigned long long类型的变量存储值从0到%llu\n", ULLONG_MAX);     
    printf("最小的非零float类型变量的值的是%.3e\n", FLT_MIN);
    printf("最大的float类型变量的值的是%.3e\n", FLT_MAX);
    printf("最小的非零double类型变量的值的是%.3e\n", DBL_MIN);
    printf("最大的double类型变量的值的是%.3e\n\n", DBL_MAX);
    printf("最小的非零long double类型变量的值的是%.3Le\n", LDBL_MIN);        
    printf("最大的long double类型变量的值的是%.3Le\n", LDBL_MAX);           
    printf("float类型的变量提供%u位精度的小数位数\n", FLT_DIG);
    printf("double类型的变量提供%u位精度的小数位数\n\n", DBL_DIG);
    printf("long double类型的变量提供%u位精度的小数位数\n", LDBL_DIG);
    system("pause"); 
    return 0


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值