1.整数类型
数据类型 | 所占字节 | 范围 |
---|---|---|
char | 1字节 | -128 ———127 |
short | 2字节 | -32768——32767 |
int | 取决于编译器 | |
long | 取决于编译器 | |
long long | 8字节 |
那么问题来了,如何表示负数呢?
一个新概念:补码
二进制补码较为常见,简单来说,正整数的补码就是它本身的二进制,负整数的补码则为与之将相应的正整数的二进制中1与0相互交换
比如:-1的补码就是1111 1111,
数的范围
1个字节=8位,
unsigned:在整数类型前加上unsigned可以把该类型变成不带符号的整数,
若一个变量想表示自己是unsigned可以在后面加上u或者U
- 例 255U
整数越界:在我们的单个整数类型当中,可以将他的范围理解为一个圆圈,当一个数走到127时,它再做加1的话它的值就变成-128。如下图:
其他数据类型同理,此处以char为例。。。。
整数的输入与输出
数据类型 / 进制 | 输入与输出 |
---|---|
int | %d |
unsigned | %u |
long long | %ld |
unsigned long long | %lu |
8进制 | %o |
16进制 | %x |
在这么多数据类型选哪个好呢?
没有特殊需要,就选择int
在整数类型当中,还有一个特殊的类型——char
char —— 字符类型
用单引号表示,例:char c =‘1’;这里的变量c表示一个字符1
输入与输出都是%c
逃逸字符:
字符 | 意义 | 字符 | 意义 |
---|---|---|---|
\b | 回退一格 | \ " | 双引号 |
\t | 到下一个表格位 | \ ’ | 单引号 |
\n | 换行 | \ \ | 反斜杠本身 |
\r | 回车 |
2.浮点数类型
类型 | 字长 | 有效数字 |
---|---|---|
float | 32 | 7 |
double | 64 | 15 |
输出精度
浮点数用%f输出,而在%后面加上 .数字 表示输出小数点后多少位;
printf("%.5f",0.00458);
printf("%.10f",0.00458);
printf("%.20f",0.00458);
看下输出结果
超出范围的浮点数
printf输出inf表示该数超出范围
printf输出nan表示该数不存在
在这么多数据类型选哪个好呢?
没有特殊需要,就选择double
3.逻辑类型
bool
使用该类型时,要先定义一个 #include <stdbool.h>
4.指针类型
5.自定义类型
sizeof()
给出某个变量或类型在内存当中占据的字节,sizeof是静态运算符。在括号内部不做计算
例如:printf(“sizeof(int)=%d”,sizeof(int)); 其他数据类型同理
数据类型转换
1,自动数据类型转换
当俩个数据类型不相同时,会自动转换为较大的类型
char >> short >> int >>long >>long long
int >> float >>double
对于printf输出而言,任何比int小的数据类型都会转换为int
同理 float都会转换为double
而scanf输入不会,要输入short类型,需要%hd
2,强制数据类型转换
数据类型)值
例 printf("%d",(int)105.5); 会输出 105
其他数据类型同理。。。。
逻辑运算
名称 | 符号 |
---|---|
非 | ! |
或 | 俩条竖线 |
且 | && |