目录
山不在高,有仙则名。水不在深,有龙则灵。
----CSDN 时时三省
1,整型数据
代码如下:
#include <stdio.h>
int IntData(void)
{
int a = 10; //十进制
int b = 027; //八进制
int c = 0x30; //十六进制
printf("a = %d, b = %o, c = %x\n", a, b, c);
printf("a = %d, b = %d, c = %d\n", a, b, c);
return 0;
}
运行结果:
思考:
为什么两行同样是打印 a, b, c,打印出来的结果不一样呢?
因为 int 型数据a 赋值为 十进制的 10. 所以两行打印均以 %d 打印时,结果一样。
int 型数据b 赋值为 八进制的 27. 所以第一行以 %o 打印时,结果为 27. 而以 %d 打印时,结果为 23.
自己思考下 int 型数据c 吧。
常见的格式控制符如下:
2,实型数据
代码如下:
int ShiXingData(void)
{
float b = 2.0;
int c = 30000; // 0 0000000 0 0000000 00000000 00000110
printf("b = %f\n", b);
printf("b = %lf\n", b);
printf("b = %f\n", b);
printf("c = %d\n", c);
return 0;
}
运行结果:
思考:
%f, %lf, 就是类似于数学中的小数,所以这种格式打印时,小数点后面的0也打印。
3,转义字符
代码如下:
int ZhuanYiZiFu(void)
{
char a = '\'';
char b = '\015';
char c = '\x16';
printf("hello world!\n");
printf("'\n");
printf("jackie said:\"you are beautiful~\"\n");
printf("a = %c\n", a);
printf("b = %d\n", b);
printf("c = %d\n", c);
return 0;
}
运行结果:
思考:
因为转义字符的使用,
所以 a 打印出来是 ' ,
八进制的b 15 用十进制打印为 13,
十六进制的c 16 用十进制打印为 22. jackie 说的话中,
冒号后面的双引号能打印出来。
常见的转义字符如下图,
4,printf() 函数的使用
int PrintfTest(void)
{
int a = 12345;
float b = 12.35;
int c = -12345;
float d = 12.33;
printf("%d\n", a);
printf("hello world\n");
printf("%-7d%-7d\n", a, a);
printf("%7d%7d\n", a, a);
printf("%2d%2d\n", a, a);
printf("%-4d%-4d\n", a, a);
printf("hello world\n");
printf("%+7d\n", a);
printf("%+7d\n", c);
printf("hello world\n");
printf("%0.1f\n", b);
printf("%0.2f\n", b);
printf("%0.3f\n", b);
printf("%0.1f\n", d);
printf("%0.2f\n", d);
printf("%0.3f\n", d);
return 0;
}
执行结果;
思考:
之所以同样的值,打印出来的效果不一样,是因为 printf() 函数有不同的格式控制符。
同时,可以看出,%m.nf 格式输出有四舍五入的功能。
格式控制符如下:
5,scanf() 函数的使用
代码如下;
int ScanfTest(void)
{
int a;
int b;
char c = 4;
float d; // %f
double e; // %lf
printf("please input two data:\n");
scanf("%d %d", &a, &b);
printf("a = %d, b = %d\n", a, b);
return 0;
}
执行结果:
思考:
scanf() 函数提供了 人和终端交互的方法。可以输入2 和 3, 即被扫描进 a 和 b 中