C数据类型、常量、进制转换
一、数据类型(在32位操作系统上)
??1、基本数据类型(有符号的字符:最高位为1代表负数 为0代表正数)
???(1) 字符类型:char(一个字节), signed char(有符号字符类型), unsigned char(无符号字符类型)
???(2) 整形:
??????短整型:short 或 short int(2个字节)
??????????signed short
??????????unsigned short
??????整形:int (4字节)
??????长整型:long 或long int(4字节)
??????长长整型:long long 或者long long int (8字节)
???(3)实型:(浮点类型)
??????float 单精度的浮点类型 (4字节)
??????double 双精度的浮点类型(8字节)
??????long double (12个字节)
???(4) 枚举类型:enum
??2、构造类型
??????数组:char buf[2]
??????结构体:struct
??????共用体:union
??3、指针类型(都是4字节)
??????char? *
??????int? *
??????long? *
??????void?* ---------->万能指针
??4、空类型:void(不占用字节)
二、常量
??(1)字符类型常量: char
?????单引号引起来的,它代表的是字符,是个常量(对应ASCII码表)(使用指令:man ascii 命令可以查看ASCII码表)
?????注意:字符常量只能赋值给字符类型
??????'\n'? ‘a’ ? 'A' ? 't'
??????10 ? ? 97 ? ? 65 ? 116
??(2)整形常量:short ? int ? long
??????1 ?? 39 ?? 0 ??-3 ?? -4
??(3)实型常量(浮点):
??????3.14 ? 2.85 ? 2.12e-1 ? 0.231E2
??????168E2(或者168E+2)=168 *10(2次方)
??????168E-2=168 *10(-2次方)
????注意:浮点类型的数据不能直接使用“==”来比较大小,我们可以使用范围精度来比较大小:
????????例如:写一个float?x 与“0”比较的if语句:
点击查看代码
const float Accuracy = 0.00001;
if ((x >= -Accuracy) && (x <= Accuracy)){
printf("x = 0\n");
}
????? “hainfa”,“ahfaoi”
??(5)标识常量(宏)
三、进制转换:
???二进制:逢二进一(0b是二进制的开头)----------->二进制转换成十进制可以使用8421码进行转换。
???????0b110110 = 转换为10进制 = 1 *2^5 + 1 *...........
???十进制:逢十进一
???????65 = 0b100 0001
???????50 = 0b0011 0010
???????12= 0b1100
???????0001=1
???????0010=2
???????0100=4
???????1000=8
???八进制:逢八进一(0是八进制的开头)
???????0664 = 6 *8^2 + 6 *8^1 + 4 *8^0 =436
????????????????????????=0b110 110 110
???????0775 = 0b111 111 101
????注:八进制中的一位转化成二进制对应的是三位
???十六进制:逢十六进一(0x代表十六进制)
???????0?1?2?3?4?。。。。。。?9?a?b?.....?f
???????0xa38f = 0b1010 0011 1000 1111
????注:十六进制中的一位转化成二进制对应的是四位