读书人

关于printf的有关问题,哪位高手能用pr

发布时间: 2012-02-07 17:45:36 作者: rapoo

关于printf的问题,谁能用printf的实现来解释一下
代码执行起来
int main()
{

int a =1;
float b = 1.0;
float c = a/10;
//问题一:为什么不一样啊, 用%d输出b不是一次类型转换?

printf( "%d \n ", (int)(b));
printf( "%d \n " , b );

//这个更奇怪了,为什么,只是把第一个%d该成%f,后面的也会发生变化?
printf( "%d , %f , %f \n ", a/10 , b/10, c );
printf( "%f , %f , %f \n ", a/10 , b/10, c );



getch();
return 0;


}

会得到这样的结果:
1
0
0 , 0.100000 , 0.000000
-0.000000 , 0.000000 , -1.#QNAN0


小弟实在不解,望各位高人给点指教,谢谢了!


[解决办法]
printf 不会检查你给第二个及其之后的参数的是否符合第一个参数的要求。

比如这个语句
printf( "%d \n " , b );

第一个参数指定了要打印第是整形, printf函数就会在b变量的地址开始取出4个字节按照整形格式打印,printf不管你给的b变量是否正确。
[解决办法]
关注一下
[解决办法]
printf是从后向前 取值滴 这个你得注意下

读书人网 >C语言

热点推荐