1.基本数据类型
整型: short int long
浮点: float double
字符: char
unsigned:表示无符号的数
signed :有符号 默认就是有符号的
char 1字节 8bit -128,127
unsigned char 1字节 8bit 0,255
short 2字节 16bit -32658,32767 -2^15,2^15 -1
unsigned short 2字节 16bit 0,65535
int 4字节 32bit -2^31,2^31 -1
unsigned int 4字字 32bit 0,2^32 -1
long 4/8字节 -2^63,2^63 -1
windows下64位 8 以后做开发时不会直接使用long类型
long long 8字节
float 4字节 32bit(1符号8指数位23尾数位) 3.4*10^38
小数点精确6位 6-7
double 8字节 64bit(1符号11指数位52尾数位) 1.79*10^308
小数点精确12位 15-16
long double 12字节
2.进制
二进制
十进制
八进制
十六进制
数据在内存中以补码形式存在
补码: 正数的补码 等于 原码
负数: 最高位是1(表示符号位 负数)
正数的二进制取反+1
先减1按位取反
int: 最大值 0(31个1) 最小值 1(31个0)
-1 (32个1)
0 (32个0)
3.变量
(1)变量的定义
数据类型 表示符;//变量所存储的类型
一个变量如果没有初始化(第一次赋值),那么变量连将保存一个随机值(垃圾值)
变量必须先定义(声明)才能使用,在同一个作用域下面,同名的变量只能有一个同类型的变量可以一次性声明,中间用逗号隔开,然后每个变量独自初始化。
(2)变量名规则
a由数字、字母、_组成
b不能由数字开头
c不能与C语言的关键字冲突
C89有32个关键字:
(i)数据类型
char short int long float double unsigned signed void
复合数据类型:struct(结构体) enum(枚举) union(联合)
(ii)循环
for while do goto break continue
(iii)分支选择
if else switch case default
(iv)数据储存
auto static extern const register volatile
(v)其它
typedf sizeof return
d允许标识符无限长(c89识别31个,c99识别63个)
e标识符区分大小写
建议:
(a)标识符驼峰式/下划线方式 nanmeOfStudent name_of_student
驼峰式:从第二个字母开始首字母大写
下划线:单词之间用_连接
(b)见名知义
int a = 10; int age = 18;
(c)见名知类型
int iAge = 18; double dSalary = 323.325
(3)变量的初始化
变量初始化之后是一个确切的值;局部变量和块变量在声明的时候是一个垃圾值,所以一般会选择初始为0或者其它有意义的值
变量是一个左值(可以放在=左边)
变量的本质是标识一块内存空间,操作变量其实是操作这一块内存空间
(4)变量的操作
变量 = 值; 往变量所标识的内存区域写入一个数据
printf(“%x”,变量); 取得变量所标识内存区域的数值
(5)变量的作用
保存数据 方便计算
4.格式输入输出
底层是补码二进制,按照指定的格式输入输出
printf(格式字符串,数据列表)
格式占位符 %- m.n l |h x
-左对齐,省略默认右对齐;m 域宽;n 小数点后位数;
l长,h短
h 短整型
l 长整型
if 双精度浮点类型
i/d 十进制整数 %i %d没有区别
u 无符号整数
f 单精度浮点数
e 浮点类型科学技术法类型
g 以简短形式显示浮点类型 省略多余的0
x 十六进制
o 八进制
c 字符
s 字符串
p 输出地址 指针
scanf(格式字符串,地址列表);
地址列表:即对变量名进行&运算符 请记住&
%d 输入十进制的数据
%i 输入任意进制的数据