|
发表于 2013-7-18 11:54:28
|
显示全部楼层
本帖最后由 格式天下 于 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的话就没意义了,因为你不知道它的只是多少,未定义行为
希望对你有帮助
|
|