欢迎光临散文网 会员登陆 & 注册

P2.数据类型 (基本数据类型)

2023-08-22 15:48 作者:创世十鹰  | 我要投稿

整数类型 

基本介绍:

C语言的整数类型就是用于存放整数值的,

比如 12 , 30, 3456等等 

案例演示: int num = 10;


3) C语言的整型类型,分为有符号 signed 和无符号 unsigned 两种,默认是 signed  

4) C程序中整型常声明为int型,除非不足以表示大数,才使用long long

5) bit(位): 计算机中的最小存储单位。byte(字节):计算机中基本存储单元。 1byte = 8bit [ 二进制再详细说,简单举例一个 short 3 和 int 3 ]

示意图: 

short 3 在内存中占有 2字节 

int 3 在内存中占有 4个字节


我的源码及注释: 

#include <stdio.h>

void main(){

//int 默认就是带符号整数(signed int)(就是分整数和负数)

int num = -2147483648;

signed int num2 = 2147483648;//越界,就不会得到我们想要的结果


long num3 = 666;

long int num4 = 2147483648;

long long num5 = 12147483648;


//查看系统int类型有几个字节,sizeof(类型或变量名都行),查看字节数,

printf("int的字节数=%d\n",sizeof(int));//输出 int的字节数=4

printf("num=%d num2=%d\n",num,num2);// 输出 num=-2147483648 num2=-2147483648


printf("long型字节数=%d long int型字节数=%d long long型字节数=%d\n",sizeof(num3),sizeof(num4),sizeof(long long));


//输出long型数据是要加上l(%ld),long long型加上两个ll(%lld),不加就会得不到正确结果(和没写long long一样)

//虽然在我电脑上long型和int型都是4个字节,写不写%ld一样(但是在其他系统不一定一样,比如linux),%lld必须写,所以都要给我写上

printf("num3=%ld num4=%ld num5=%lld",num3,num4,num5);//输出 num3=666 num4=-2147483648 num5=12147483648

getchar();


//以我系统为例

//有符号整数int默认是signed int,它们就是一个东西,所以基本上全都用int,很少用signed int

//4个字节,32个bit,int范围:-2^31 到 2^31-1(-2147483648 到 2147483647),因为第一个要表示符号(正负号)

//无符号整数(unsigned int) 0 到 2^32-1(0到4294967295)(因为没有符号啦,全是正数)

//其他类型差不多一样

}


/*

注意:

1.各类型是存储大小与操作系统、系统位数和编译器有关

signed char 1个字节 -2^7 到 2^7-1

unsigned char 1个字节 0到2^8-1  无符号字符类型数据

//整型

int(或是signed int) 2或4个字节 2字节的范围(-2^15到2^15-1) 4字节范围(-2^31到2^31-1)

unsigned int 2或4个字节 2字节的范围(0到2^16-1) 4字节范围(0到2^32-1)

//短整型

short(signed short) 2个字节 -2^15 到 2^15-1

unsigned short 2个字节 0到2^16-1

//长整型

long(signed long) 4个字节 (-2^31到2^31-1)

unsigned long 4个字节 (0到2^32-1)

还有很多

long long 8个字节

long int 4个字节


2.C语言中整数类型,分为有符号(signed)和无符号(unsigned)两种。默认是signed(也就是说 不指定就是signed)

3.C程序中整型数据常声明为 int型,除非不足以表示大的数,才使用long long

4.比特(bit)(位):计算机最小存储单位。字节(byte):计算机基本存储单元。1byte=8bit

5.short型的数据3占有 2个字节,但是int型的数据3占有 4个字节

*/

浮点类型 

基本介绍 C语言的浮点类型可以表示一个小数,比如 123.4 ,7.8 ,0.12等等 

案例演示: 

void main() { 

double salary = 10000.56; 

double num1 = 1.3; 

double num2 = 4.5; 

double sum = num1 + num2; 

printf(" sum = %.2f" , sum);// 

getchar(); 

}

浮点型的分类 


说明一下: 

1) 关于浮点数在机器中存放形式的简单说明,

浮点数=符号位+指数位+尾数位 , 浮点数是近视值 

2) 尾数部分可能丢失,造成精度损失。

浮点型使用细节:

1) 浮点型常量默认为double型 ,声明float型常量时,须后加‘f’或‘F’。 

2) 浮点型常量有两种表示形式 十进制数形式:如:5.12 512.0f .512 (必须有小数点) 科学计数法形式:如:5.12e2 、 5.12E-2  

3) 通常情况下,应该使用double型,因为它比float型更精确。

4) printf("d1=%f ", d1); // 在输出时,默认保留 小数点6位


我的源码及注释: 

#include <stdio.h>

#include <stdlib.h>

void main(){

//浮点型默认是double类型,声明float类型时,需要加f或F

float f1 = 69.69696969;//默认是double类型。(编译链接时的提示:从“double”到“float”截断,就是说double到float丢失精度)

float f2 = 69.69696969f;//这样才是单精度float型

double f3 = 69.69696969f;//

double f4 = 69.69696969;//这才是该要的

double f5 = 5.12E2;

double f6 = .512e-3;


printf("f1=%f f2=%.15f f3=%.15f f4=%.15f f5=%f f6=%f\n",f1,f2,f3,f4,f5,f6);//这里的f要小写才行

//输出 f1=69.696968 f2=69.696968078613281 f3=69.696968078613281 f4=69.696969690000003 f5=512.000000 f6=0.000512

//窗口暂停

system("pause");

}


/*

细节:

1.浮点型默认为double型,声明float变量是,须在数后加 F或f(大小写都行)

2.浮点类型两种表示形式:十进制形式:5.12,5.12f, .512(和0.512一样,0开头的小数,0可以省略不写)

3.一般情况,应该使用double类型,因为它比float更加精确

4.printf("d=%f",d1);//输出时,默认保留小数点后6位。

*/

字符类型(char) 

基本介绍 :

字符类型可以表示单个字符,字符类型是char,char是1个字节(可以存字母或者数字), 多个字符称为字符串,在C语言中 使用 char数组 表示,数组不是基本数据类型,而是 构造类型[关于数组我们后面详细讲解.] 

案例演示: 

void main() { 

char c1 = 'A'; 

char c2 = '0'; 

char c3 = '\t';

printf("c1=%c c3=%c c2=%c", c1, c3, c2); //%c 表示以字符的形式输出 

getchar();

}

字符类型使用细节:

1) 字符常量是用单引号('')括起来的单个字符。例如:char c1 =  'a'; char c3 = '9';  

2) C中还允许使用转义字符‘\’来将其后的字符转变为特殊字 符型常量。例如:char c3 = ‘\n’; // '\n'表示换行符 

3) 在C中,char的本质是一个整数,在输出时,是ASCII码对应 的字符。 

4)可以直接给char赋一个整数,然后输出时,会按照对应的 ASCII 字符输出 [97] 

char c1 = 'a'; char c2 = 'b'; char c3 = 97;

5) char类型是可以进行运算的,相当于一个整数,因为它都对 应有Unicode码.  

char ch = 'a';

int num= ch + 1;

字符类型本质探讨:

1) 字符型 存储到 计算机中,需要将字符对应的码值(整数)找出来 存储:字符'a'——>码值 (97)——>二进制 (1100001)——>存储() 读取:二进制(1100001)——>码值(97)——> 字符'a'——>读取(显示) 

2) 字符和码值的对应关系是通过字符编码表决定的(是规定好)

ASCII 码介绍(了解) 

1) 在计算机内部,所有数据都使用二进制表示。每一个二进制位(bit)有 0 和 1 两种状态, 因此 8 个二进制位就可以组合出 256 种状态,这被称为一个字节(byte)。一个字节一共 可以用来表示 256 种不同的状态,每一个状态对应一个符号,就是 256 个符号,从 0000000 到 11111111。 

2) ASCII码:上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系, 做了统一规定。这被称为ASCII码。ASCII码一共规定了127个字符的编码,比如空格“SPACE” 是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32 个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。 

3) 看一个完整的ASCII码表 [自己百度 看表] 

4) 缺点: 

1.不能表示所有字符。 

2.相同的编码表示的字符不一样:比如,130在法语编码中代表了é,在希伯来语编码中 (ג) 却代表了字母


我的源码及注释:

#include <stdio.h>

void main(){

char c1 = 'a';

char c2 = 'b';

//以%c输出c3时,就会按照ASCll编码表97对应的字符输出。

char c3 = 97;

int num = c2 + 3;


//【非常注意,vs2010编译器是c89,所以要求变量的定义,必须在执行语句之前】


printf("c1=%c c1对应的整数=%d c2=%c c2对应的整数=%d c3=%c c3对应的整数=%d num=%c num对应的整数=%d",c1,c1,c2,c2,c3,c3,num,num);

//c1=a c1对应的整数=97 c2=b c2对应的整数=98 c3=a c3对应的整数=97 num=e num对应的整数=101

getchar();

}


/*

字符型数据 存储到计算机中,首先需要将字符对应的码值(整数)找出来。

以a举例:

存储:字符('a')-->码值(97)-->二进制(1100001)-->存储

读取:二进制(1100001)-->码值(97)-->字符('a')-->读取(显示)

*/

P2.数据类型 (基本数据类型)的评论 (共 条)

分享到微博请遵守国家法律