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)
long long------------8字节-------(-9223372036854775808–9223372036854775807)
unsigned long*long–8字节----0~1844674407370955161615
2、整型常量:整型常量即整型数据,可正可负,在c语⾔中,整型常量有⼆进制整数,⼋进制整数和⼗六进制整数三种形式。
浮点型变量float扩展整型常量的表⽰法,常⽤添加后缀来实现。
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");
return0;
}
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) 强转符号只针对于 最近的操作数有效,往往会使⽤ ⼩括号提升优先级。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论