这个程序有点小问题请帮忙解答一下啊!
#include<stdio.h>void main()
{
char c='k';
int i=1,j=2,k=3;
unsigned e;
float x=3e+5,y=0.85;
printf("%d,%d\n",!x*!y,!!!x);
printf("%d,%d\n",x||i&&j-3,i<j&&x<y);
printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);
}
程序里面红色的第二个判断语句为什么是0啊,i<j是1,x<y也有可能为1啊,因为x中的e不确定为正的值还是负的值啊!如果x是负值的hua请帮忙解答一下啊!
本帖最后由 格式天下 于 2013-7-18 12:02 编辑
首先上图
然后上程序,当略微的改了下哈
#include<stdio.h>
void main()
{
char c='k';
int i=1,j=2,k=3;
unsigned e;
float x=3e+5,y=0.85;
printf("%f\n" ,x );
printf("%d,%d\n",!x*!y,!!!x);
printf("%d,%d\n",x||(i&&(j-3)),(i<j)&&(x<y));
printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);
}
由运行结果可以看出,x = 300000.000000
这显然想x < y不成立 嘛,你的问题出在了 x = 3e +5
这是浮点数,而x = 3e+5 也就是 x = 3 X (10^5) 哦,至于e是一个关键字,慎用^_^
当然如果x是负数的话x<y就成立,那结果自然是1啦
上图!!
当然啦,还有对应的程序:
#include<stdio.h>
void main()
{
char c='k';
int i=1,j=2,k=3;
unsigned e;
float x=-(3e+5),y=0.85;//这里把x变为负数
printf("%f\n" ,x );
printf("%d,%d\n",!x*!y,!!!x);
printf("%d,%d\n",x||(i&&(j-3)),(i<j)&&(x<y));
printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);
}
还有一个问题:假设把e换成其他字母,只是定义 unsigned的话就没意义了,因为你不知道它的只是多少,未定义行为
希望对你有帮助
是不是优先级乱了? 是不是3e的问题?3*e? 你的问题解决了没? 人在不?来了说下。解决的问题是在哪! 就是说e是指数的意思呗,在这个里面 新人,路过学习一下{:1_1:} 帮顶 :call路过
页:
[1]