- 运算符优先级
- 0.1+0.2二十位显示
- %-6f和%8f左右对齐
- 整形常量020和20打印
- 字符与字符串
由于快离职了,不给我安排活了,然后上班没事干看了看C陷阱与缺陷,好玩的我就写上来了 运算符优先级
#include "stdio.h"
#include "stdlib.h"
int main()
{
int x = 3;
int y = 5;
printf("%dn",x---y);
return 0;
}
Operation results:
-2
#include "stdio.h"
#include "stdlib.h"
int main()
{
int x = 10;
int y = 20;
int *p = &x;
printf("%fn",y/ *p);
return 0;
}
Operation results:
0.000000
'/'和'*'挨着就是注释了,
打印变成%d结果就是2了,其实需要强转一下(float)(y/(*p))打印就是2.000000
0.1+0.2二十位显示
#include "stdio.h"
#include "stdlib.h"
int main()
{
printf("%.20fn",0.1+0.2);
return 0;
}
Operation results:
0.30000000000000004000
%-6f和%8f左右对齐
#include "stdio.h"
#include "stdlib.h"
int main()
{
printf("%-6fn",0.1+0.2);
printf("%8fn",0.1+0.2);
return 0;
}
Operation results:
0.300000
0.300000
整形常量020和20打印
如果一个整形常量的第一个字符是数字0,那么该常量将被视作八进制数。
#include "stdio.h"
#include "stdlib.h"
int main()
{
printf("%dn",20);
printf("%dn",020);
return 0;
}
Operation results:
20
16
字符与字符串
单引号引起的一个字符实际上代表一个整数
#include "stdio.h"
#include "stdlib.h"
int main()
{
//这三种方式其实是等效的
char hello[] = {'h','e','l','l','o',' ','w','o','r','l','d','n',0};
printf("hello worldn");
printf(hello);
printf("%s",hello);
return 0;
}
Operation results:
hello world
hello world
hello world



