问题很菜,肯请高手不要笑话
#include<stdio.h>
#include<math.h>
void main()
{
double a,b,t;
scanf("%d%d",&a,&b);
t=a>b?a:b;
printf("the bigger one is: %lf\n",t);
}
其实就是简单的两数比较大小然后输出大数,我试过了,在vc++6.0中运行时如果输入的两个数都是负数或两个数都不是负数,则都会输出较小的数,而如果只有一个数为负数时,则能正确地输出较大的数(也就是正数或零),这是为什么?
请各位高手先解决以上的问题再继续往下看
——————————————————————————————————————————————-——————————
其实这是以前百度上的一个问题,只不过解决得不怎么好,“解决的”那个人说把printf中的%d改成%lf(插一个小问题:谭浩强的书P81的第二个表格中没有说printf中存在%lf,但是P81的scanf则明确表示可以,那么在printf中能不能用%lf?),结果是不管输进什么都得到类似“the bigger one is: -92559592117432005000000000000000000000000000000000000000000000.000000
Press any key to continue”的结果。为什么啊??????
我想此问题无非就和三个地方挂钩(以下用①②③已注明)
#include<stdio.h>
#include<math.h>
void main()
{
① a,b,t;
scanf("%②%②",&a,&b);
t=a>b?a:b;
printf("the bigger one is: %③\n",t);
}
假如①可用char,short,int,long,float,double挨个替换
②可用c,d,f,lf挨个替换
③可用c,d,f,lf挨个替换
那么这样有很多种组合情况(当然有些组合纯粹是扯淡),我的主要问题是这些组合有那些是可行的?哪位高手能抽出一点宝贵的时间帮我详细详细详细讲讲这里面的知识点。这一类的问题已经困扰我好长时间了,谁能让我豁然开朗啊!提前谢谢所有回答此问题的人了.
在下自称菜鸟也是在高手面前表示谦虚而已,并不表示我真的刚刚开始学习C语言啊!做人要低调哦!所以请各位尽管讲,放开地讲!!!