回 帖 发 新 帖 刷新版面

主题:又幾個題

#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个回复)

沙发

问点有建设性的问题不行吗?

板凳


高手都被这种事情搞烦了 

3 楼

菜鳥就是菜鳥啊,沒辦法!經人指撥一下才會明白,不像在學校裡可以問老師同學,在這裡隻能這樣了.
不好意思!!!

4 楼

问题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 楼

前置和后置运算的区别

6 楼

“无论怎样printf("%d\n",n--);都会执行。” 这个我懂了。
if (n++<10) printf("%d",n);

printf("%d\n",n--);

能否解释一下两个语句结果为什么都是10?

7 楼

注意后置单目运算符是先取值再计算……
n++<10其实是两部分,先计算n<10,这时候n是9当然<10,判断完n自增1,所以第一个打印是10
n--也是两部分,先取出n,这时候n是10,再减一才是9
还不明白的话在后面再打印一次n即可
麻烦lz同学好学之余好好看看书可以吗?任何一本C语言教材(国产的“傻瓜书”之类的不算,那些基本上都是傻瓜骗傻瓜的)在序论部分都会讲运算符的计算方式的

8 楼

[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 楼

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

我来回复

您尚未登录,请登录后再回复。点此登录或注册