1.整型
- 整型就是整数,分为长整形和短整形,分别为32位长和16位长。表示的数的范围不同。若是无符号整型,就只能表示正整数了。有符号的整型,能表示正整数和负整数。
- 整型 int:
- 存储整数,最大整数2147483647=2^31-1
- 长整型:long
- 读写操作时,前面加上"l"->%ld,%lo,%lx
- long long
- 读写操作时,前面加上"ll"->%lld,%llo,%llx
- 短整型:short
- 读写操作时,前面加上"h"->%hd,%ho,%hx
2.实型
实型实际就是浮点数,有小数部分,分为单精度浮点数和双精度浮点数,分别为32位长和64位长。表示的数的范围不同。
- 单精度浮点数 float:
- 输入scanf:%lf、%lg、%le
- 输出print:%f、%g、%e
- 输入scanf:%lf、%lg、%le
- 双精度浮点数 double:
- %e
- 扩展精度浮点数 long double:
- %lf
- 字符类型
- char
- %c
- 'a'97
- 'A'65
- '0'48
- ' '32
-
一道笔试题:
不能做switch()的参数类型是:实型
- char
- 补充一道代码,把小写字母转换为大写
-
if('a'<=ch&&ch<='z') { ch=ch-'a'+'A'; }
C语言提供toupper()函数来检查是否是小写字母
-
if(toupper(ch)=='A')....
-
3.字符型
- char类型
-
字符型就是8位长整数,若是无符号字符型,就只能表示0~255之间的正整数。有符号的整型,能表示-128~127之间的正整数和负整数。ASCII字符可以用一个字符型表示。
-
5.十进制、八进制与十六进制
- 十进制:
- 0-9数字
- 一定不能以0开头
- %u %d
- 八进制:
- 0-7数字
- 必须0开头
- %o
- 必须0开头
- 十六进制:
- 0-9 a-f
- 以0x开头
- 十六进制中字母既可以大写,也可以小写
- %x
- 十六进制中字母既可以大写,也可以小写
- 以0x开头
- 0-9 a-f
- 0-7数字
6.有符号与无符号
有符号:第1位一定是用来存储符号,标记正负号。正数或零,左边位(符号位)=0
负数:符号位=1。最大16位整数的二进制表示形式为0111 1111 1111 1111=32767=2^15-1。最大32位整数是0111 1111 1111 1111 1111 1111 1111 1111=2147483647=2^31-1
无符号:最左边一位是数值的一部分,而不是符号位。最大的16位无符号整数是65535=2^16-1,最大32为无符号整数是4294967295=2^32-1。
默认的整数是有符号的,也就是左边位保留符号位。如果要告诉编译器无符号,需要在类型前面加上unsigned。
计算:
表示区间:-128~127。如果>127的数字截取其二进制的后8位,并带入其符号位。
eg1:
char a=128;
printf(“%d”,a);
输出过程为:
128二进制->1000 0000
保留后8位:1000 0000
加上符号位:1->负数‘-’
最终结果:-1000 0000->‘-128’
eg2:
char a=129;
printf(“%d”,a);
输出过程为:
129二进制->1000 0001
保留后8位:1000 0001
加上符号位(默认第一位为符号位):1->负数‘-’
负数求解:取反+1:1111 1110 +1=1111 1111=1 0000 0000-1=128-1=127
最终结果:-127
无符号:unsigned。所有位都是数值位。表示区间:0~255
eg1:
unsigned char a=128;
printf(“%d”,a);
输出过程为:
128二进制->1000 0000
保留后8位:1000 0000
最终结果:1000 0000->‘128’
eg2:
unsigned char a=129;
printf(“%d”,a);
输出过程为:
129二进制->1000 0001
保留后8位:1000 0001
最终结果:1000 0001->‘127’
将有符号位转换为无符号:强制转换
char a=10;
b=(unsigned char)a;
分类:
自定义数据类型:结构型,联合型和枚举型
内置数据类型:char,short,int....语言自带的数据类型
总结基本数据类型:
(1个字节8位)
字符型char:1字节
短整型short:2字节
整型int:4字节
long:4
long long:8字节
浮点型float:4字节
双精度浮点型double:8字节
long double:8
指针类型:4字节
补充一个:x86平台(32),指针大小4字节;64平台指针大小为8字节