1.数据类型
1.1 数据类型分类
- 构造类型--用户自定义的数据类型
- 存储负数使用有符号数
- 字符型也分为有符号数和无符号数
#include <stdio.h>
int main()
{
}
1.2基本数据类型
bool类型
- bool不是基本数据类型,使用的时候需要加入头文件
#include <stdbool.h>
#include <stdio.h>
#include <stdbool.h>
int main()
{
/*
非0 为真
0 为假
*/
bool a;
a = true;
a = false;
if(a) {
print("true %d\n",a);
}esle{
print("false %d\n",a);
}
return 0;
}
#include <stdio.h>
#include <stdbool.h>
int main()
{
/*
非0 为真
0 为假
*/
bool a;
a = -1; // a表示-1,非0为真
if(a) {
print("true %d\n",a); // 结果为true 1
}esle{
print("false %d\n",a);
}
return 0;
}
- 代码编译之前有一个预处理的过程,预处理过程会将一些宏进行展开
gcc -e ctype.c -o bool.i
- 编译的时候会将<stdbool.h>进行展开,编译文件中的bool被替换为_Bool说明进行了宏替换,这个宏是定义在<sdtbool.h>中的
// 原始的<stdbool.h>文件中,定义了宏,预处理的时候会进行宏替换,和头文件展开
#define bool _Bool
#define true 1
#define false 0
#define _Bool bool
#define bool bool
使用bool类型的两种方式
1.加头文件,使用bool(宏定义的布尔类型),如果想要使用true 1 false 0 要加头文件
2.不加头文件,使用_Bool,_Bool是基本数据类型
char类型
- char 1个字节 -128-127或者0-255
- signed char 1字节 -128-127
- unsigned char 1字节 0-255
- unsigned char 0000_0000 - 1111_1111 (0-255);255的计算可以看作是先加1,则最大值变为1_0000_0000(2^8 = 256),256-1 = 255
- 有符号数的最大值,0111_1111(2^7-1 = 127)
- -127 -- 原码 1111_1111,反码 1000_0000,补码 1000_0001
- -128 -- 补码在内存中为1000_1000
#include <stdio.h>
int main()
{
char ch;
ch = 127; // -128-127 是可以的
ch = 65; // 可以打印A
ch = 128; // 正数128赋值给ch,ch得到的补码是1000_000,char类型存储-1
ch = 129; // 129的补码是1000_0001,char类型中127的补码也是1000_0001,所以存储127
unsigned char b;
b = -1; //b给的原码是1000_0001 反码 1111_1110 补码1111_1111
// b的补码对应unsigned char的存储值是255
printf("ch=%d\n,%c\n",ch,ch);
return 0;
}
整型
- short -- 2个字节和int -- 4字节--长度不同
- sizeof(类型) -- 查看数据类型占几个字节
- short -32768-32767
- unsigned short 0-65535
#include<limits.h> -- 这个头文件中有数据类型数据最大最小值的宏定义
2.常量
2.1 基本数据类型常量
常量是指在程序运行期间数值不发生变化的数据,整型常量通常简称为整数
整型常量
整数可以是十进制数\8进制数\十六进制数
// 3365
06434 -- 8进制数
0xdlc -- 十六进制数
浮点型数据
浮点型常量又称为实数,一般含有小数部分;在c语言中,实数只有十进制的实数,分为单精度和双精度;实数有两种表示方法,即一般形式和指数形式
3.24
3.14
-12.5
指数形式
- 通常表示特别大的数或者特别小的数
- e/E表示指数
1.176e+10
-3.5789e-8
#include <stdio.h>
int main()
{
int a = 0x12345678;
float b = 2.3e+10;
printf("%d %x %o\n",a,a,a);
printf("%e,%f\n",b,b);
return 0;
}
字符型常量
字符常量指一个单一字符,其表示形式是由两个单引号包括的一个字符
'a'
'A'
'?'
'$'
'0'
在c语言中,字符常量具有数值,字符常量的值就是其对应的ASCII码制,可以将字符常量看作是一个字节的整数
a = 'F'; // 将70给a A -65 F是70
b = 'A'+2; // b中存储的是C字符
u = 'B'+' '; // 66+32 = 98 --b -- 大小写字母转换