[转]C++各种数据类型的取值范围

先看一个例子,貌似有些编译器并不完全支持所有数据类型,运行结果可能也有差异,依编译器而异,但是获得方式都是一样的、、

#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;

}

运行结果如下:

char类型的变量存储值从-128到127

unsigned char类型的变量存储值从0到255
short类型的变量存储值从-32768到32767
unsigned short类型的变量存储值从0到65535
int类型的变量存储值从-2147483648到2147483647
unsigned int类型的变量存储值从0到4294967295
long类型的变量存储值从-2147483648到2147483647
unsigned long类型的变量存储值从0到4294967295

long long类型的变量存储值从-9223372036854775808到9223372036854775807
unsigned long long类型的变量存储值从0到18446744073709551615
最小的非零float类型变量的值的是1.175e-038
最大的float类型变量的值的是3.403e+038
最小的非零double类型变量的值的是2.225e-308
最大的double类型变量的值的是1.798e+308

最小的非零long double类型变量的值的是-0.000e+000
最大的long double类型变量的值的是-1.#QOe+000
float类型的变量提供6位精度的小数位数
double类型的变量提供15位精度的小数位数

long double类型的变量提供18位精度的小数位数

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 肯定是占两个字节!

关于int 类型与操作系统,编译器相关说明如下:

如:win32下为32位,win64下为64位

如果软件有移植需求,请使用固定大小的数据类型

注意:long 的字节数是不随平台改变的,都是4字节

补充:

BYTE 1字节 typedef unsigned char BYTE;

WORD 2字节 typedef unsigned short WORD;

DWORD 4字节 typedef unsigned long DWORD;

C++中各种数据类型的取值范围记入如下表


数据类型名称


字节数


别名


取值范围


int


*


signed,signed int


操作系统决定,即与操作系统的"字长"有关


unsigned int


*


unsigned


由操作系统决定,即与操作系统的"字长"有关


__int8


1


char,signed char


–128 到 127


__int16


2


short,short int,signed short int


–32,768 到 32,767


__int32


4


signed,signed int


–2,147,483,648 到 2,147,483,647


__int64


8



–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807


bool


1



false 或 true


char


1


signed char


–128 到 127


unsigned char


1



0 到 255


short


2


short int,signed short int


–32,768 到 32,767


unsigned short


2


unsigned short int


0 到 65,535


long


4


long int,signed long int


–2,147,483,648 到 2,147,483,647


long long


8


none (but equivalent to __int64)


–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807


unsigned long


4


unsigned long int


0 到 4,294,967,295


enum


*



由操作系统决定,即与操作系统的"字长"有关


float


4



3.4E +/- 38 (7 digits)


double


8



1.7E +/- 308 (15 digits)


long double


8



1.7E +/- 308 (15 digits)


wchar_t


2


__wchar_t


0 到 65,535

原文链接:http://www.cnblogs.com/ma6174/archive/2012/02/04/2337958.html

       http://blog.163.com/lj_2005/blog/static/4586542201131225724/

时间: 2024-10-04 18:22:09

[转]C++各种数据类型的取值范围的相关文章

mysql中数据类型的取值范围

mysql整型bigint.int.mediumint.smallint 和 tinyint的语法介绍,如下: 1.bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号的范围是0到 18446744073709551615.一位为 8 个字节. 2.int 一个正常大小整数.有符号的范围是-2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,64

java数据类型,取值范围,引用类型解析

与javascript不同,Java是强类型语言,在定义变量前需要声明数据类型.主要分两种数据类型:基本数据类型和引用数据类型. 1.基本数据类型分析: 基本数据类型 数值型 整数型 byte字节类型 占8位,用于表示最小数据单位,取值范围为-128~127(代表以存储数字的大小) short 短整型  16位,很少用,取值范围为-32768 ~ 32767 int 整数类型 32位,常用,取值范围为-2147483648 ~21474836487 long 长整形  64位,常用,取值范围为-

MySQL数据库的数据类型以及取值范围详解

主要包括以下五大类:整数类型:BIT.BOOL.TINY INT.SMALL INT.MEDIUM INT. INT. BIG INT 浮点数类型:FLOAT.DOUBLE.DECIMAL 字符串类型:CHAR.VARCHAR.TINY TEXT.TEXT.MEDIUM TEXT.LONGTEXT.TINY BLOB.BLOB.MEDIUM BLOB.LONG BLOB 日期类型:Date.DateTime.TimeStamp.Time.Year 其他数据类型:BINARY.VARBINARY.

数据类型及其取值范围

速查表: char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65536 (2 Bytes)int -2147483648 ~ +2147483647 (4 Bytes)unsigned int 0 ~ 4294967295 (4 Bytes)long == intlong long -9223372036854775808 ~ +9223372036854775807 (8 Bytes)doub

当不知道基本数据类型的取值范围时,可以通过max_value等来查询

public class Demo03{ public static void main(String[] args){ System.out.println("int MAX "+Integer.MAX_VALUE); System.out.println("int MIN "+Integer.MIN_VALUE); }}

数据类型取值范围计算

之前一直不清楚数据类型的取值范围是怎么计算的,现在弄懂了,记录一下. char型示例 signed char类型取值范围计算1 假设一个字符型变量占用一个字节,也就是8个二进制位(bit),由于是signed,所以最高为可以为1(负数)或0(正数). 当最高位为1时,能表示的范围是[1000 0000]-[1111 1111].然后按照二进制转十进制的规则计算,二进制"1000 0000"将8bit全部取反,变成"0111 1111",再加上1变成"100

mysql中bigint、int、mediumint、smallint 和 tinyint的取值范

mysql数据库设计,其中,对于数据性能优化,字段类型考虑很重要,搜集了些资料,整理分享出来,这篇为有关mysql整型bigint.int.mediumint.smallint 和 tinyint的语法介绍,如下:1.bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号的范围是0到 18446744073709551615.一位为 8 个字节. 2.int 一个正常大小整数.有符号

mysql中bigint、int、mediumint、smallint 和 tinyint的取值范围

mysql数据库设计,其中,对于数据性能优化,字段类型考虑很重要,搜集了些资料,整理分享出来,这篇为有关mysql整型bigint.int.mediumint.smallint 和 tinyint的语法介绍,如下:1.bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号的范围是0到 18446744073709551615.一位为 8 个字节. 2.int 一个正常大小整数.有符号

【C#学习路途之一】数据类型中的值类型

刚刚学习了C#的数据类型中的值类型,在C#中,数据类型分为三中,一种是值类型,另一种是引用类型,最后一种不常用,是指针类型,这个在C语言中经常使用,到现在我都没搞明白! 整数类型: 数据类型 含义 取值范围 sbyte 有符号8位整数 -128到127 byte 无符号8位整数 0到255 short 有符号16位整数 -32768到32767 ushort 无符号16位整数 0到65535 int常用 有符号32位整数 2三十一次方 到 2三十一次方-1 uint 无符号32位整数 0到429