1.局部变量是离自己最近的大括号内有效,并不是在整个函数内有用。 2.C语言中,先int i,当你在scanf输入i时,输入的是"03",则i会赋值等于3,不会报错(在解决有关日期的问题代码里可能有妙用) 3.关于"%d" %6d: 输出宽度为6,不足左边补上空格 %06d:宽度是6位,不足左边补上"0" %6.2d:宽度是6位,但只显示2位 %-6d:宽度6位,不足右边补上空格 %.6f:保留小数后6位 %3.2f:总宽度为3,不足补空格,小数保留2位,若超过3会自动拓展 即小数点前的数字代表输出数字的宽度,小数点后的数字代表输出数字的精度 4.#define x 3+2 int i=2*x; 此时i等于"2*3+2=8" 而如果是 int i=x*2; 此时i等于"3+2*2=7" 5.scanf("%d",&i); printf("i=%d\n",i); fflush(stdin); //fflush(stdin)的作用是清空输入缓冲区,以免下面的scanf("%c",c)会读到'\n' scanf("%c",c)
6.int 在转为 float 时,也可能发生精度丢失,因为int是32位,float也是32位 但是float在内存中二进制存储时候还有符号位和指数部分,数值部分只有23位 而且float的精度只有6-7位,也就是说如果一个int类的数据位数多于7位就会有精度丢失 但是如果int =234,这种小于6位的就不会。
7.在考研的时候看到“8位字长的计算机”,这个时候就要注意int 就不是4个字节了,而是1个字节
8.二进制数字:1.111111...... (假设小数点后有n个1),则1.1111111......转换为10进制数
1.11111111......=2-2^(-n)