研究问题
- printf中数据类型解析问题?
- printf 是否能自动数据类型转换?
- printf格式化规定符?
要点:
- printf不支持数据类型转换
- 在按照给出的打印格式查找变量时
1》若与变量数据类型不匹配,则打印垃圾数据。
2》若变量数据类型有歧义性(如:define M 3.14),则编译器无法识别3.14是float\double\long\long,导致无法解析,结果打印为0。 - printf有连带错误机制,同一个printf中前面的打印错误会导致后面的打印都错误!!!
截图展示区
1》关于printf数据类型解析
#include<stdio.h>
void main()
{
const int M = 30;
const float N = 3.14;
/*int a[M];*///C++中可以
printf("%d\t%f\n", 3.4, 2);
printf("%d\t%f\n", 2, 2);
printf("%d\t%f\n", M, M);
printf("%d\t%f\n", N, N);
printf("%d\n", H);//解析失败打印0,520.0(float/double/long)使编译器无法确定数据类型,导致歧义性
getchar();
}
运行结果:
2》printf连带错误机制CODE:
#include<stdio.h>
void main()
{
printf("%d,%d\n",10.9,10);
printf("%d\n", 10.9);
printf("%d\n", 10);
getchar();
}
运行结果: