C语言基本数据类型(short,int,long,long long,float,double,char),整型,浮点型,字符型的大小,取值范围,输出(打印)格式详解。

本文详细介绍了C语言的基本数据类型,包括整型(short, int, long, long long)的取值范围、大小及输出格式,无符号整型,浮点型(float, double)的表示范围和特点,以及字符型(char)的编码与输出方式。所有内容基于64位Windows系统和MinGW64编译器。" 107738400,9390312,XML详解:概念、特点与语法规则,"['前端', 'XML', '数据存储', '标记语言', '语法规则']


前言

以下的内容全部是在64位windows系统下运行的,编译器为:MinGW64;


一、整型(short,int,long,longlong)

1.有符号整型

所谓的符号其实就是指正负号(±),有符号类型就是指前面有正号(+)或负号(-),说明有符号整型即可以存正整数也可以存负整数;

有符号整型:前缀为signed,例如:signed int num = 0;前缀signed可以省略,经常写作:int num = 0;


(1)int类型

printf("%d\n",sizeof(int));

输出结果为:

4

sizeof是用来计算一个变量,或者数据类型的长度,以字节为单位;这里用来计算基本数据类型的大小;

也就是说int类型的大小是 4 字节,也就是32位;
一共有2^32 = 4294967296种组合方式;

能表示的数值范围是
-2^(32-1) ~ 2^(32-1)-1 (即 -2147483648 ~ 2147483647)

打印类型(输出格式)是 %d ,使用格式为 int 名 = 值;

int num_int = 10;
printf("%d\n",num_int);

输出结果为:

10

总结
在这里插入图片描述



(2)short类型

printf("%d\n",sizeof(short));

输出结果为:

2

也就是说short类型的大小是 2 字节,也就是16位;
一共有2^16 = 65536种组合方式;

能表示的数值范围是
-2^(16-1) ~2(16-1) -1 (即 -32768 ~ 32767)

打印类型(输出格式)是 %hd ,使用格式为 short 名 = 值;

short num_short = 20;
printf("%hd\n",num_short);

输出结果为:

20

总结
在这里插入图片描述



(3)long类型

printf("%d\n",sizeof(long));

输出结果为:

4

也就是说long类型的大小是 4 字节,也就是32位;
一共有2^32 = 4294967296种组合方式;

能表示的数值范围是
-2^(32-1) ~ 2^(32-1)-1 (即 -2147483648 ~ 2147483647)

打印类型(输出格式)是 %ld ,使用格式为 long 名 = 值;

long num_long = 30;
printf("%ld\n",num_long);

输出结果为:

30

总结
在这里插入图片描述


可以发现除了数据类型名称和输出格式不同之外,其他都和int类型完全相同,再次强调,内容全部是在64位windows系统下运行的,编译器为:MinGW64;不同的设备可能会有区别,大家可以去试试看;



(4)long long类型

printf("%d\n",sizeof(long long));

输出结果为:

8

也就是说long long类型的大小是 8 字节,也就是64位;
一共有2^64 = 18446744073709551616种组合方式;

能表示的数值范围是
-2^(64-1) ~ 2^(64-1)-1 (即 -9223372036854775808 ~ 9223372036854775807)

打印类型(输出格式)是 %lld ,使用格式为 long long 名 = 值;

long long num_long_long = 40;
printf("%lld\n",num_long_long);

输出结果为:

40

总结
在这里插入图片描述



2.无符号整型


所谓的无符号其实就是前面只有正号(+)没有负号(-),也就是说无符号整型存储的是非负数

无符号整型:前缀为unsigned,例如:unsigned int num = 0;前缀unsigned不可以省略;


(1)unsigned int 类型

printf("%d\n",sizeof(unsigned int));

输出结果为:

4

也就是说unsigned int类型的大小是 4 字节,也就是32位;
一共有2^32 = 4294967296种组合方式;

能表示的数值范围是
0 ~ 2^(32)-1 (即 0~4294967295)

打印类型(输出格式)是 %u ,注意是%u不是%d,使用格式为unsigned int 名 = 值;

unsigned int num_unsigned_int = 10;
printf("%u\n",num_unsigned_int);

输出结果为:

10

总结
在这里插入图片描述



(2)unsigned short 类型

printf("%d\n",sizeof(unsigned short));

输出结果为:

2

也就是说unsigned short类型的大小是 2 字节,也就是16位;
一共有2^16 = 65536种组合方式;

能表示的数值范围是
0 ~ 2^(16)-1 (即 0~65535)

打印类型(输出格式)是 %hu ,unsigned short 名 = 值;

unsigned short num_unsigned_short = 10;
printf("%hu\n",num_unsigned_short);

输出结果为:

10

总结
在这里插入图片描述



(3)unsigned long 类型

printf("%d\n",sizeof(unsigned long));

输出结果为:

4

也就是说unsigned long类型的大小是 4 字节,也就是32位;
一共有2^32 = 4294967296种组合方式;

能表示的数值范围是
0 ~ 2^(32)-1 (即 0~4294967295)

打印类型(输出格式)是 %lu ,unsigned long 名 = 值;

unsigned short num_unsigned_long = 10;
printf("%lu\n",num_unsigned_long);

输出结果为:

10

总结
在这里插入图片描述



(4)unsigned long long类型

printf("%d\n",sizeof(unsigned long long));

输出结果为:

8

也就是说unsigned long类型的大小是 8 字节,也就是64位;
一共有2^64 = 18446744073709551616种组合方式;

能表示的数值范围是
0 ~ 2^(64)-1 (即 0~18446744073709551615)

打印类型(输出格式)是 %llu ,使用格式是 unsigned long long 名 = 值;

unsigned short num_unsigned_long_long = 10;
printf("%llu\n",num_unsigned_long_long);

输出结果为:

10

总结
在这里插入图片描述



二、浮点型(float,double)

注意浮点型都是有符号类型的,没有unsigned float和unsigned double这种用法



1. float:单精度浮点型;

printf("%d\n", sizeof(float));

输出结果为:

4

也就是说float类型的大小是 4 字节,也就是32位;

注意:浮点型在计算机中是以指数形式存储的

在float 4字节32位中:
(1)有一位是符号位:
   0表示正数,1表示负数;

(2)指数部分有8位:
  指数部分有8位,有2^8 = 256种组合方式,能够表示的指数范围为:-128~127,所以float类型的范围为-2^128 ~ +2^128, 即-3.40×10^38 ~ +3.40×10^38;

(3)尾数部分有23位;
  因为尾数部分有23位,所以有2^23=8388608种组合方式,一共有7位,所以有7位有效数字,但是绝对能保证的只有6位,也就是说 绝对正确的只有6位,超过6位就不能保证了。

关于浮点型有以下三点需要注意:
(1)有效数字指的是从第一个不是零的数字开始往后数,有几位数字就是几位有效数字,而不是特指小数部分,一定要把两者区分清楚;

(2)float和double在输出时,会保留6位小数,不足补0。

(3)在C语言中,小数默认都是double类型,所以在定义float时经常会在后面加上f;比如:float f = 3.14f;

打印类型(输出格式)是 %f ;使用格式是 float 名 = 值

float num_float = 31415.92653511f;
printf("%f\n",num_float);

输出结果为:

31415.925781

注意:有效数字是7位,但绝对保证正确的只有6位;一旦超过6位就不能保证了;下面的double类型也是如此;

总结
在这里插入图片描述



2. double:双精度浮点数;

printf("%d\n", sizeof(double));

输出为:

8

也就是说double类型的大小是 8 字节,也就是64位;

在double 8字节64位中:
(1)有一位是符号位;
   0表示正数,1表示负数;

(2)指数部分有11位;
  指数部分有11位,有2^11 = 2048种组合方式,能够表示的指数范围为:-1024~1023
所以double类型的范围为 -2^1024 ~ +2^1024,也即 -1.79×10^ 308 ~ +1.79×10^308

(3)尾数部分有52位;
  因为尾数部分有52位,所以有2^52 = 4503599627370496种组合方式,一共有16位,所以有16位有效数字,但是绝对能保证的只有15位,也就是说绝对正确的只有15位,超过15位就不能保证了。

打印格式(输出格式)是%lf; 使用格式是 double 名 = 值;

double num_double = 314159265351234.92653511;
printf("%lf\n",num_double);

输出为:

314159265351234.940000

总结
在这里插入图片描述


小数也可以使用 printf 函数输出,包括十进制形式和指数形式,它们对应的格式控制符分别是:
(1)%f 以十进制形式输出 float 类型,保留6位小数,不足补0;
(2)%lf 以十进制形式输出 double 类型,保留6位小数,不足补0;
(3)%e 以指数形式输出 float 类型,输出结果中的 e 小写;
(4)%E 以指数形式输出 float 类型,输出结果中的 E 大写;
(5)%le 以指数形式输出 double 类型,输出结果中的 e 小写;
(6)%lE 以指数形式输出 double 类型,输出结果中的 E 大写。



三、字符型(char)

printf("%d\n",sizeof(char));

输出结果为:

1

也就是说char类型的大小是 1 字节,也就是8位;

注意:字符型变量是通过编码的方式来存储字符的;
(1)计算机使用特定的整数编码来表示特定的字符。
 美国普遍使用的编码是 ASCII(American Standard Code for Information Interchange 美国信息交换标准编码)。也就是我们常说的ASCII码表;

(2)ASCII码表的范围是 0 ~ 127,故而 7 位(bit)就足以表示全部ASCII码表,而一个字节有8位,所以char类型占一个字节;

(3)还有扩展ASCII码,许多基于X86的系统都支持使用扩展(或高)ASCII码,扩展ASCII码允许将每个字符的第8位用于确定附加的128个特殊符号字符、外来语字母和图形符号;扩展ASCII字符从128 ~ 255(0x80~0xff)的字符。

下面是ASCII码表:
在这里插入图片描述

(4)输出格式为%c;使用格式是 char 名 = 值;

char c = 'A';
printf("%c\n",c);

输出为:

A

总结

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值