使用vs,qt编译代码,必须新建工程(项目),把代码加载到工程后才能编译。
用qt编译,加载代码后如果不能运行,可以尝试关闭再重启。
用<>包含系统的头文件,用“”包含自定义的头文件。
system
在C语言中需要包含头文件<stdlib.h>.
功能:在函数内部调用外部程序。
不同系统(windows,linux)的system返回值不同。
字符编码
- windows默认支持的中文编码为 gbk,gb312,ANSI。
- linux默认支持的中文编码为utf-8(unicode)。
注意:使用不符合系统要求的中文编码会导致乱码。
C语言的编译为分步编译。
- 预处理,将头文件展开。此步还未对语法结构进行检查。生成.i 文件。
- 编译,将.i 文件转化为.s 文件,生成汇编代码。
- 汇编,将.s文件转换为.o文件,生成目标代码(二进制),但是还不能运行。
- 链接:链接一些动态库等东西。
寄存器
寄存器与缓存都是在CPU内部。硬盘程序加载至内存,如果需要运算,不能在内存中直接运算,需要将数据加载至寄存器计算。
但是如果寄存器与内存不断交换数据,速率较低,所以内存是把数据给缓存,缓存与寄存器进行数据交换,运算。最后缓存将数据返回给内存。
进制
二进制转换为十进制
一个数据右边是低位,左边高位,最右边为0位。
给出一个二进制数
1 0 1 1
转换成十进制的方法为:相应的位(n位)为2的n次方乘以该位的数字,最终所有位上的数相加。
1011为:1*8+0*4+1*2+1*1=11
以此类推。
m进制转换为十进制
同样,右边为低位,第一个数为0位
相应的位(n位)为m的n次方乘以该位数字,最终所有位上的数相加。
二进制与八进制,十六进制的转换
二进制的数从右边算起,每三个为一组,不足三个就在左边添0
每组数进行转换
二进制:110 011 001 101
八进制:6 3 1 5
相反的,八进制转二进制,则每个位对于三个二进制数,不足就在左边添0.
二进制与十六进制则是一个对应4个位。方法类似。
八进制与十六进制的转换:先转为二进制,再继续转换。
原码反码补码
一个字节八个位,最左边为符号位。符号位为0代表正数,为1代表负数。
反码:先把原码转换为二进制数。如果是正数,则反码和原码一致,如果是负数,则在原码基础上,符号位不变,其它位取反(即0和1互换)
补码:正数的原码反码补码一样,如果是负数,补码为其反码加一。