首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于printf的有关问题,哪位高手能用printf的实现来解释一下

2012-02-07 
关于printf的问题,谁能用printf的实现来解释一下代码执行起来intmain(){inta1floatb1.0floatca/10//

关于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是从后向前 取值滴 这个你得注意下

热点排行