C语言——查漏补缺
1,区余运算符两边都应该是整形,比如:7.5%2是没有意义的。
2,a + b,假设a和b都是float类型,则运算时,系统会自动把a和b都扩充成8个字节的double性进行运算,产生结果后邮把结果转换回float型。
3,
1 #include<stdio.h>
2 int main()
3 {
4 int i=3;
5 printf("%d,%d,%d\n",i,i++,i++);
6 return 0;
7 }
输出结果:5,4,3
因为printf中i,i++,i++的求值比较特殊,他是从右往左求值的。
4,赋值运算符
字符型数据付给整型数据,由于字符型为1个字节,而整型为4个字节故将字符的ASCII码值放在整型量的最低的8位中,高位的3个字节为0.
整型赋给字符型,只把低8位赋给字符变量。
5,逗号运算符和逗号表达式
求值过程为从左到右分别求出这n个表达式的值,逗号表达式的运算优先级是最低的,赋值运算符的优先及高于它,请判断下面的结果:
int a=5;
a = (a=3*5, a*4),a+5;
结果:60。
int a=5;
a = ((a=3*5,a*4),a+5);
结果:20。
6,格式化输出
e:以科学表示法输出浮点数。
g:输出%f与%e中占用位数较短的一个。
1 #include<stdio.h>
2 int main()
3 {
4 char c='a';
5 int i = 1234;
6 float f = 12.123456;
7 double d = 12.5;
8
9 printf("%d %o %x\n",i,i,i);
10 printf("%c %d\n",c,c);
11 printf("%s\n","hello world");
12 printf("%f %e %g\n",f,f,f);
13
14
15 printf("=========================\n");
16 printf("%5c%5d%10.5f%10.5f\n",c,i,f,d);
17 printf("=========================\n");
18 printf("%-5c%-5d%-10.5f%-10.5f\n",c,i,f,d);
19 }
~
结果:
1234 2322 4d2
a 97
hello world
12.123456 1.212346e+01 12.1235
=========================
a 1234 12.12346 12.50000
=========================
a 1234 12.12346 12.50000