一、整数存储方式(补码)
正整数存储方式:正数的补码即是正数的二进制。
负整数存储方式:负数补码 = 该数的绝对值的二进制,并对除最高位的取反,再加1;
二、无符号数据输出
对无符号整型数据输出用“%u”,表示用无符号十进制数的格式输出。
例子:
printf("%u\n", u_num);
三、浮点数存放方式
float 和 double 类型,视系统定,多少位用于小数部分,多少位用于指数部分。
float型:精度为6位有效数字,一般为4个字节。
double型:精度为15位有效数字,一般为8个字节。
浮点型常量默认是双精度,分配8字节。
四、强制类型转换
float x = 3.8;
int a = (int)x; #强制类型转换
原理:进行强制类型转换的时候,int(x)会先得到一个int类型的临时值,等于x的整数部分。赋值给int类型的a后,x的类型和值都未发生改变,并临时值不再存在。
1、将一个占字节多的整型数赋值给一个占字节少的整型数,只将多字节的低字节赋值即可。
五、变量赋值
对几个变量要赋同一值,应该写
int a = 3, b = 3, c = 3; # 对
int a = b = c = 3; #是错误的
一般变量初始化不是在编译阶段完成的(只有静态存储变量和外部变量的初始化是编译阶段完成的),而是在程序运行的时候执行本函数时赋予初值的。
int a = 3;
## 相当于
int a;
a = 3;
六、输出格式e
用 %e 指定以指数形式输出实数,Visual C++系统会默认给数字部分的小数位分6列,指数部分占5列(如e+002,其中e 占一列,指数符号占1列,指数占3列)。指数标准化形式的输出,即是小数点前必须有且仅有1位非零数字。
例子:
printf("%e", 123.456);
输出:1.234560e+002
其中:234560占6列,e+002占5列,实际输出长度为13列
#---------------------------------------
printf("%13.2e", 123.456);
输出: 1.23e+002 (前面有4个空格)
其中:13.2表示总长13,小数部分为2,e+002默认占5列
七、使用scanf的注意事项
如果在scanf中除了格式声明外还有其他字符(包括空格),则在输入数据的时候,要和scanf中的字符相对应。
scanf("%f%f", &a,&b);
连续输入数字时,为了区别数字值,可以用空格进行隔离
输入:2.3 5.4
但是scanf中有其他字符的时候
scanf("a = %f, b = %f", &a, &b);
因此输入的时候要一一对应即
输入:a = 2.3, b = 5.4 (要对应,包括空格)
scanf("%c%c", &a,&b);
连续输入字符的时候,不能用空格进行隔离
输入:ab (不能有空格)