1.进制间转换
十进制转二进制:十进制的数一直除以2,直到商为0,结果为逆序的每个余数。("除2取余,逆序排列"法,十进制转八、十六进制同理)
16(10)→10000(2)
十进制小数转二进制小数:小数一直乘以2,直到小数部分为0,结果为顺序的每个整数部分。("乘2取整,顺序排列"法)
0.25(10)→0.01(2)
0.25*2=0.5 取整是0 ↓
0.5*2=1.0 取整是1
二进制转十进制:从右边第0位开始乘以2的位数次幂,二进制中为0的数忽略不计。
101(2)→1*2^2+0+1*2^0=5(10)
八进制转二进制转十进制(十六进制转二进制转十进制同理)
3 4(8)
↓
011 100(2)
↓
28(10)
2.计算机存储空间是以8位1字节,内存以补码的形式存储。
3.关键字
由字母、数字、下划线组成,不能数字开头。
4.类型转换
显示转换:(int)a (int)2.5→2 通常发生在高精转低精,损精。
隐式(自动)转换:通常发生在低精转高精,赋值号右边类型将转换为左边类型;
同在赋值号右边将按高位看齐,char→int→unsigned→long→float→double(低→高精度转移)。
5.注意问题
(1)7%-4 → 3,-7%4 → -3
(2)负号的优先级高于减号。负号与自增、自减同在,优先级按右结合。
main()
{
int i=8;
printf("%d
",++i);
printf("%d
",--i);
printf("%d
",i++);
printf("%d
",i--);
printf("%d
",-i++);
printf("%d
",-i--);
printf("%d
",i);
}
输出结果:9 8 8 9 -8 -9 8
i的初值为8
第二行i加1后故输出9
第三行i减1后故输出8
第四行输出i为8后再加1(为9)
第五行输出i为9后再减1(为8)
第六行输出-8后再加1(为9)
第七行输出-9后再减1(为8)
最后输出8
(3)j=5;q=(++j)+(++j)+(++j);→j=8,q=24
(4).
8进制:正负号开头,0为第一位
16进制:正负号开头,0x为前2位
(5) i+++j→(i++)+j
(6) x*=y+7→x=x*(y+7)
(7) int z = sizeof(float);
(8) printf("%0.0f ",0.55f); → 1(浮点类型的显示的最后一位会四舍五入)