一、编程常见的错误
1.编译型错误==语法错误
编译期间发现,容易解决。
2.链接型错误
链接期间发现,无法解析的外部符号,无法解析的外部命令。
int main()
{
int a=20,b=10;
int c=Add(a,b);
printf("%d\n",c);
}
没有头文件,没定义Add函数或函数名字写错。
解决方法:找名字
3.运行时错误
借助调试解决的错误,最难。
二、数据类型介绍
unsigned signed
short=signed short
有正负存放在有符号变量中
无符号数最高位是数据位
char不知道有无符号取决于编译器
构造类型=自定义类型:
数组类型 int arr[10]->类型是int [10]
结构体类型struct
枚举类型enum
联合类型union
指针类型
void
三、整型在内存中的存储
1.原码
正数:三个码都相等
负数:符号位是1
2.反码
负数:原码符号位不变其他位依次按位取反
3.补码
负数:补码=反码+1
内存中存补码
几进制:0—几-1 10=a
1+(-1)
原码算:
1:00000000000000000000000000000001
-1:10000000000000000000000000000001
和:10000000000000000000000000000010—>-2
用原码算错了
补码算
1补码:00000000000000000000000000000001
-1:
原码:10000000000000000000000000000001
反码:1111111111111111111111111111111111110
补码:1111111111111111111111111111111111111
和: 100000000000000000000000000000000第一位丢了—>0
%u打印无符号数,不是无符号数也认为是无符号数
%d打印有符号数,不是有符号数也认为是有符号数
四、大小端字节序存储
地址:左低右高
字节:左高右低
大端字节序存储:
低位字节处的数据存放在高地址处
小端字节序存储:
低位字节处的数据存放在低地址处
char*p=(char*)&a拿出一个字节判断大小端
eg.
char a=-1
原:10000000000000000000000000000001
反:1111111111111111111111111111111111110
补:1111111111111111111111111111111111111
char 8个比特位取后8
11111111
%d打印a整型提升,有符号位补符号位,无符号补0
提升后补码:11111111111111111111111111111111
反码:11111111111111111111111111111110
原码:1000000000000000000000000001—>-1