常量
#define 宏定义常量 -const 定义常量 ,不安全可以通过指针修改
变量
二进制 ------逢二进一
int a = 123; //十进制方式赋值
int b = 0123; //八进制方式赋值, 以数字0开头
int c = 0xABC; //十六进制方式赋值
//如果在printf中输出一个十进制数那么用%d,八进制用%o,十六进制是%x
printf("十进制:%d\n",a ); // 十进制输出
printf("八进制:%o\n", b); // %o,为字母o,不是数字
printf("十六进制:%x\n", c); // x 小写输出 ,X 大写输出
printf("十六进制:%u\n", d); // u 无符号
打印格式 含义 %hd 输出short类型 %d 输出int类型 %l 输出long类型 %ll 输出long long类型 %hu 输出unsigned short类型 %u 输出unsigned int类型 %lu 输出unsigned long类型 %llu 输出unsigned long long类型
sizeof()
计算数据类型在内存中所占的字节(Byte)大小 32 bit操作系统中的默认大小
数据类型 说明 内存占用大小 char 字符型 1字节 short 短整型 2字节 int 整型 4字节 float 单精度浮点型 4字节 long 长整型 4字节 long long 长长整型 8字节 double 双精度浮点型 8字节
源码
一个数的原码(原始的二进制码)有如下特点:
最高位做为符号位,0表示正,为1表示负 其它数值部分就是数值本身绝对值的二进制数 负数的原码是在其绝对值的基础上,最高位变为1
反码
对于正数,反码与原码相同 对于负数,符号位不变,其它部分取反(1变0,0变1)
补码
无符号和有符号的区别
当我们写程序要处理一个不可能出现负值的时候,一般用无符号数,这样可以增大数的表达最大值。 unsigned
无符号数最高位不是符号位,而就是数的一部分,无符号数不可能是负数。 signed
有符号数是最高位为符号位,0代表正数,1代表负数。
数据类型 占用空间 取值范围 short 2字节 -32768 到 32767 (-215 ~ 215-1) int 4字节 -2147483648 到 2147483647 (-231 ~ 231-1) long 4字节 -2147483648 到 2147483647 (-231 ~ 231-1) unsigned short 2字节 0 到 65535 (0 ~ 216-1) unsigned int 4字节 0 到 4294967295 (0 ~ 232-1) unsigned long 4字节 0 到 4294967295 (0 ~ 232-1)
ASCII对照表
ASCII值 控制字符 ASCII值 字符 ASCII值 字符 ASCII值 字符 0 NUT 32 (space) 64 @ 96 、 1 SOH 33 ! 65 A 97 a 2 STX 34 " 66 B 98 b 3 ETX 35 # 67 C 99 c 4 EOT 36 $ 68 D 100 d 5 ENQ 37 % 69 E 101 e 6 ACK 38 & 70 F 102 f 7 BEL 39 , 71 G 103 g 8 BS 40 ( 72 H 104 h 9 HT 41 ) 73 I 105 i 10 LF 42 * 74 J 106 j 11 VT 43 + 75 K 107 k 12 FF 44 , 76 L 108 l 13 CR 45 - 77 M 109 m 14 SO 46 . 78 N 110 n 15 SI 47 / 79 O 111 o 16 DLE 48 0 80 P 112 p 17 DCI 49 1 81 Q 113 q 18 DC2 50 2 82 R 114 r 19 DC3 51 3 83 S 115 s 20 DC4 52 4 84 T 116 t 21 NAK 53 5 85 U 117 u 22 SYN 54 6 86 V 118 v 23 TB 55 7 87 W 119 w 24 CAN 56 8 88 X 120 x 25 EM 57 9 89 Y 121 y 26 SUB 58 : 90 Z 122 z 27 ESC 59 ; 91 [ 123 { 28 FS 60 < 92 / 124 \ 29 GS 61 = 93 ] 125 } 30 RS 62 > 94 ^ 126 ` 31 US 63 ? 95 _ 127 DEL
转义字符
数值溢出
当超过一个数据类型能够存放最大的范围时,数值会溢出。 有符号位最高位溢出的区别:符号位溢出会导致数的正负发生改变,但最高位的溢出会导致最高位丢失。
#include <stdio.h>
int main()
{
char ch;
//符号位溢出会导致数的正负发生改变
ch = 0x7f + 2; //127+2
printf("%d\n", ch);
// 0111 1111
//+2后 1000 0001,这是负数补码,其原码为 1111 1111,结果为-127
//最高位的溢出会导致最高位丢失
unsigned char ch2;
ch2 = 0xff+1; //255+1
printf("%u\n", ch2);
// 1111 1111
//+1后 10000 0000, char只有8位最高位的溢出,结果为0000 0000,十进制为0
ch2 = 0xff + 2; //255+1
printf("%u\n", ch2);
// 1111 1111
//+1后 10000 0001, char只有8位最高位的溢出,结果为0000 0001,十进制为1
return 0;
}
实型(浮点型):float、double
实型变量也可以称为浮点型变量,浮点型变量是用来存储小数数值的。在C语言中, - - 浮点型变量分为两种: 单精度浮点数(float)、 双精度浮点数(double), 但是double型变量所表示的浮点数比 float 型变量更精确
类型限定符
限定符 含义 extern 声明一个变量,extern声明的变量没有建立存储空间。extern int a; const 定义一个常量,常量的值不能修改。const int a = 10; volatile 防止编译器优化代码 register 定义寄存器变量,提高效率。register是建议型的指令,而不是命令型的指令,如果CPU有空闲寄存器,那么register就生效,如果没有空闲寄存器,那么register无效。