c语言笔记------数据类型(整型,字符型,浮点型,布尔型)

基本数据类型

在这里插入图片描述

另外,整形还包括了长长整形
浮点型还包括长双精度型

一、整型数据

包括整型变量和整型常量
1、整型变量:
1)基本类型为int型,在整型的表示符号int前加上不同的修饰符,就可以将int型扩展成别的类型,如short int
2)用有符号(signed)和无符号(unsigned)A两个修饰符来表示正负,如果没有添加修饰符则默认为有符号型(signed)
3)有符号型(signed int a)可以简写为int a
无符号型(unsigned int b)可以简写为unsigned b
4)计算机中的数据用二进制表示,每一位(bit)就表示一个0或者1,而每8个位又组成一个字节,字节是计算机存储的单位
5)取值范围;
-类型----------存储大小-----------值范围
char-----------1 字节------------(-128 即-(2^7) 到 127 (2^7-1))
unsigned**char—1字节------0到255 (2^8 - 1)
signed char--------1 字节-----128 即-(2^7) 到 127 (2^7-1)
short-----------------2 字节 ----32,768 (- 2^15) 到 32,767 (2^15 -1)
signed short-------2 字节-----32,768 (- 2^15) 到 32,767 (2^15 -1)
unsigned short —2 字节 ----0 到 65,535 (2^16 - 1)
int/signed int-------4 字节-----( -2,147,483,648 (- 2^31) 到 2,147,483,647 (2^31 -1))
unsigned int ----- 4 字节------- 0 到 4,294,967,295 (2^32 -1)
long------------------4字节-------(-2,147,483,648 (- 2^31) 到 2,147,483,647 (2^31 - 1)
signed long--------4字节-------(-2,147,483,648 (- 2^31) 到 2,147,483,647 (2^31 - 1)
unsigned long ----4字节--------0 到 4,294,967,295 (2^32 - 1)
longlong------------8字节-------(-9223372036854775808–9223372036854775807)
unsigned
long*long–8字节----0~1844674407370955161615

2、整型常量:整型常量即整型数据,可正可负,在c语言中,整型常量有二进制整数,八进制整数和十六进制整数三种形式。
扩展整型常量的表示法,常用添加后缀来实现。
3、整数的存储;
整数在计算机中以二进制补码形式存储,对于无符号数(大于0)直接以补码的形式存储;对于有符号数,最左边的数(也称为最高位)表示符号为,1表示负,0表示正。

二、字符类型
1、字符变量;字符型变量用来存放程序中使用的字符型数据。字符型变量通过char来定义,例如;char**c;
代码演示:

#include<stdio.h>
#include<stdlib.h>
int main()
{
	char a,b,c,d;
	unsigned char e;
	a=97;
	b='a';
	c=-28;
	d=a+1;  //字符型做算术运算
	e=228;
	printf("a=%c\n",a);
	printf("a=%d\n",a);
	printf("a=%c\n",b);
	printf("a=%d\n",b);
	printf("a=%c\n",c);
	printf("a=%c\n",e);
	printf("a=%c\n",d);
	system("pause");
	return 0;
}

2、字符常量:

  1. 字符常量是用单引号(’’)括起来的单个字符。例如:char c1 = ‘a’; char c3 = ‘9’;
  2. C 中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。例如:char c3 = ‘\n’; // '\n’表示换行符
  3. 在 C 中,char 的本质是一个整数,在输出时,是 ASCII 码对应的字符。
  4. 可以直接给 char 赋一个整数,然后输出时,会按照对应的 ASCII 字符输出 [97]
  5. char 类型是可以进行运算的,相当于一个整数,因为它都对应有 Unicode 码.
    6)转义字符--------意义------------ASCII码值(十进制)
    \a----------------响铃(BEL)--------------------------------------007
    \b----------------退格(BS) ,将当前位置移到前一列------008
    \f-----------------换页(FF),将当前位置移到下页开头----012
    \n----------------换行(LF) ,将当前位置移到下一行开头–010
    \r-----------------回车(CR) ,将当前位置移到本行开头----013
    \t-----------------水平制表(HT) (跳到下一个TAB位置)–009
    \v----------------垂直制表(VT)------------------------------------011
    \\(两条斜杠)------代表一个反斜线字符’’’-------092
    \’(单斜杠)----------代表一个单引号(撇号)字符---------039
    \"(单斜杠)----------代表一个双引号字符--------------------034
    \?(单斜杠)----------代表一个问号----------------------------063
    \0----------------空字符(NUL)-------------------------------------000
    \ddd----------1到3位八进制数所代表的任意字符-三位八进制
    \xhh----十六进制所代表的任意字符---------十六进制
    7)代码演示:
#include<stdio.h>
#include<stdlib.h>
void main(){
	char c1='a';
	char c2='b';
	int num=c2+10;//结果应该是98+10=108
	printf("c1=%d\n",c1);//
	printf("num=%d",num);
	system("pause");
}

3、字符在计算机中的存储

  1. 字符型 存储到 计算机中,需要将字符对应的码值(整数)找出来
    存储:字符’a’—>码值 (97)—>二进制 (1100001)—>存储()
    读取:二进制(1100001)—>码值(97)—> 字符’a’—>读取(显示)
  2. 字符和码值的对应关系是通过字符编码表决定的(是规定好)

三、浮点型
1、基础知识
1)C 语言的浮点类型可以表示一个小数,比如 123.4 ,7.8 ,0.12 等等
2)浮点型的分类:float 单精度,4 字节,精度 6 位小数;double 双精度,8 字节,精度 15位小数
3) 关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位 , 浮点数是近视值;尾数部分可能丢失,造成精度损失。
2、使用细节
1)浮点型常量默认为 double 型 ;声明 float 型常量时,须后加‘f’或‘F’。声明long double时,要加后缀“l”或“L”
2)由于浮点数在计算时会有精度损失,浮点运算的性质和数学运算不同。所以在程序设计中,尽量避免两个相等的浮点数进行计算。
3、浮点型常量有两种表示形式;
十进制数形式:如:5.12 512.0f .512 (必须有小数点)
科学计数法形式:如:5.12e2 、 5.12E-2(e前e后都有数,并且e后为整数)

四、布尔型
1、知识点:1) C 语言标准(C89)没有定义布尔类型,所以 C 语言判断真假时以 0 为假,非 0 为真 [案例]
2) 但这种做法不直观,所以我们可以借助 C 语言的宏定义 。
3) C 语言标准(C99)提供了_Bool 型,_Bool 仍是整数类型,但与一般整型不同的是,_Bool 变量只能赋值为 0 或 1,
非 0 的值都会被存储为 1,C99 还提供了一个头文件 <stdbool.h> 定义了 bool 代表_Bool,true 代表 1,false 代
表 0。只要导入 stdbool.h ,就能方便的操作布尔类型了 , 比如 bool flag = false;[了解]
2、代码演示:

#include <stdio.h>
//宏定义
#define BOOL int
#define TURE 1
#define FALSE 0
void main() {
int isPass = -1;
//可以使用宏定义来完成(这里大家先看下,体会一下,后面我们会详解宏定义)
//定义一个布尔变量
BOOL isOk = TURE; // 等价 int isOK = 0
if(isPass) { // 0 表示假, 非 0 表示真
printf("通过考试");
}
if(isOk) {
printf("ok");
}
getchar();
}

```五、基本数据类型转换
1、自动类型转换
1)当 C 程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动类型转
换。
2)数据类型按精度(容量)大小排序为
在这里插入图片描述
自动类型转换细节说明:

  1. 有多种类型的数据混合运算时,系统首先自动将所有数据转换成 精度最大的那种数据类型,然后再进行计算(如
    int 型和 short 型运算时,先把 short 转成 int 型后再进行运算)。
  2. 若两种类型的字节数不同,转换成字节数大的类型,若两种类型的字节数相同,且一种有符号,一种无符号,
    则转换成无符号类型
  3. 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边的类型将转换为左边的类型, 如果右边变量的数
    据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。

2、强制类型转换

1)将 精度高的数据类型转换为 精度小的数据类型。使用时要加上符 强制转换符 ( ),但可能造成精度降低或溢出,格外要注意。
2)强制类型转换一般格式如下:
( 类型名) 表达式
: 什么是表达式: 任何有值都可以称为表达式,比如 1+ 2, int num = 2
这种强制类型转换操作并不改变操作数本身。
3)代码演示:

#include <stdio.h>
void main() {
double d1 = 1.934;
int num = (int)d1; //这里注意,不是进行四舍五入,而是直接截断小数后的部分
//强制转换只对最近的数有效, 如果希望针对更多的表达式转换,使用()
//int num2 = (int)3.5 * 10 + 6 * 1.5; // 3 * 10 + 6 * 1.5 = 30 + 9.0 = 39.0
int num3 = (int)(3.5 * 10 + 6 * 1.5); // 35.0 + 9.0 = 44.0 -> int = 44
printf("\nnum3=%d", num3); // num3 = 44
printf("\nnum=%d d1=%f" , num, d1); // d1 仍然是 double
getchar();
}

强制类型转换细节说明:
1)当进行数据的从 精度高——>精度低,就需要使用到强制转换
2) 强转符号只针对于 最近的操作数有效,往往会使用 小括号提升优先级。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值