主题:又幾個題
kongleung
[专家分:0] 发布于 2010-07-16 11:08:00
#include <stdio.h>
void main()
{
float f;
double d;
f=d=8/5;
printf("%3.1f,%3.1f\n",f,d);
}
运行结果:1.0,1.0。
为什么?8/5=1.6啊。
#include <stdio.h>
void main()
{
int n=9;
if (n++<10) printf("%d",n);printf("%d\n",n--);
}
运行结果:1010。
不明白,n++<10不是成立吗?就执行printf("%d",n),后缀++是先执行后计算。n=9?
为什么还会执行下一个语句?
回复列表 (共9个回复)
沙发
强强 [专家分:4740] 发布于 2010-07-16 11:26:00
问点有建设性的问题不行吗?
板凳
alweeq86 [专家分:1170] 发布于 2010-07-16 13:16:00
唉
高手都被这种事情搞烦了
3 楼
kongleung [专家分:0] 发布于 2010-07-16 13:41:00
菜鳥就是菜鳥啊,沒辦法!經人指撥一下才會明白,不像在學校裡可以問老師同學,在這裡隻能這樣了.
不好意思!!!
4 楼
cgl_lgs [专家分:21040] 发布于 2010-07-16 15:59:00
问题1:
整数/整数=整数,小数部分舍去。
问题2:
把:
if (n++<10) printf("%d",n);printf("%d\n",n--);
改成:
if (n++<10) printf("%d",n);
printf("%d\n",n--);
这样总明白了吧:)
无论怎样printf("%d\n",n--);都会执行。
5 楼
m57091003 [专家分:60] 发布于 2010-07-17 11:50:00
前置和后置运算的区别
6 楼
kongleung [专家分:0] 发布于 2010-07-17 12:53:00
“无论怎样printf("%d\n",n--);都会执行。” 这个我懂了。
if (n++<10) printf("%d",n);
printf("%d\n",n--);
能否解释一下两个语句结果为什么都是10?
7 楼
雪光风剑 [专家分:27190] 发布于 2010-07-18 07:01:00
注意后置单目运算符是先取值再计算……
n++<10其实是两部分,先计算n<10,这时候n是9当然<10,判断完n自增1,所以第一个打印是10
n--也是两部分,先取出n,这时候n是10,再减一才是9
还不明白的话在后面再打印一次n即可
麻烦lz同学好学之余好好看看书可以吗?任何一本C语言教材(国产的“傻瓜书”之类的不算,那些基本上都是傻瓜骗傻瓜的)在序论部分都会讲运算符的计算方式的
8 楼
cgl_lgs [专家分:21040] 发布于 2010-07-19 10:41:00
[quote]“无论怎样printf("%d\n",n--);都会执行。” 这个我懂了。
if (n++<10) printf("%d",n);
printf("%d\n",n--);
能否解释一下两个语句结果为什么都是10?[/quote]
拆成这样或许您就明白了:
a=n;
n++;
if(a<10)
printf("%d",n);
a=n;
n--;
printf("%d\n",a);
建议还是多看看书:)
9 楼
moke9 [专家分:30] 发布于 2010-09-02 07:36:00
你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846
我来回复