| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1124 人关注过本帖
标题:[求助]本人乃新手。。可不可以解释一下这一韪
只看楼主 加入收藏
v1v1wang
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2007-3-25
收藏
 问题点数:0 回复次数:16 
[求助]本人乃新手。。可不可以解释一下这一韪

#include"stdio.h"
void main()
{int a=5,c;
c=(a/=a++);
printf("%d",c);
}

为什么结果是1??
当我把int换成float结果又怎么变成0了??

搜索更多相关主题的帖子: 解释 
2007-04-13 18:48
v1v1wang
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2007-3-25
收藏
得分:0 
为什么不是先计算a++
我用的是
float a=5.0 ,c=5.0:

2007-04-13 19:23
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 
你只要知道“=”的优先级要比“++”的优先级要高!
书上有的。

~~我的明天我知道~~
2007-04-13 19:47
hxw84
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-2-21
收藏
得分:0 
我的理解概括为以下几点
1.c=(a/=a++);可以等价写成c=a=a/a++;
2.a++的意思是先用a完成本语句,再将a+1
3.所以c=a=a/a++;等价于写成两句c=a=a/a;
a=a+1;
4.所以最后c=1 a=2
5.如果把int变成float,结果显示为0,那是你的输出格式忘改了,应该把"%d"也改成"%f"输出就是1.0000了
6.我的疑点是为什么程序写成
#include"stdio.h"
void main()
{
float a=5.0,c;
c=(a/=a++);
printf("%f",a);
}
输出是6.00000

[此贴子已经被作者于2007-4-13 19:55:30编辑过]


这个论坛上任何喜欢和俺交流的人俺都欢迎您加俺 qq:61997030
2007-04-13 19:54
v1v1wang
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2007-3-25
收藏
得分:0 

执行完后 A要加1


2007-04-13 20:25
帅浪
Rank: 1
等 级:新手上路
威 望:1
帖 子:139
专家分:0
注 册:2007-4-4
收藏
得分:0 
回复:(v1v1wang)[求助]本人乃新手。。可不可以解释...

我改后,结果是1.0000啊!并不是0


世上事有难易乎?为之?则难者亦易矣;不为,则易者亦难矣
2007-04-13 23:22
hahahan
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-4-10
收藏
得分:0 
我的结果,咱们对比一下。(vc6)

#include"stdio.h"
void main()
{int a=5,c;
c=(a/=a++);
printf("%d\n",c);
} //结果是 1


#include"stdio.h"
void main()
{float a=5,c;
c=(a/=a++);
printf("%d\n",c);
} // 结果是 0
#include"stdio.h"
void main()
{float a=5,c;
c=(a/=a++);
printf("%f\n",c);
} //结果是 1.000000

没事儿你就多到这儿转转
2007-04-13 23:50
旭日潜龙
Rank: 1
等 级:新手上路
帖 子:798
专家分:0
注 册:2007-3-29
收藏
得分:0 
这个还是要多多看书..基本...看你的教程....一本看不懂,再拿多本来看...
别没想过,就上来问..艾...中国人的毛病

灌水只发表情!
2007-04-14 12:22
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
以下是引用pinglideyu在2007-4-13 19:47:32的发言:
你只要知道“=”的优先级要比“++”的优先级要高!
书上有的。

你再去看看运算符的优先级,++是排第二的


下面对楼主的回答一下:

在一个变量后用++(或--)运算符,会将这个语句运行完之后再对这个变量进行++(或--),如果是出现++(或--)运算符出现在变量之前,在运行这个语句之前,先执行在变量之前的++,得到的结果再参与运算,以上只是针对只有一个++(或--)运算符的表达式,若一个表达式中有多个++(或--)运算符,不同的编译器会有不同的结果,我这里就不说了

第二个问题之所以输出的是0,是因为你用%D去输出FLOAT型,应该用%F


雁无留踪之意,水无取影之心
2007-04-14 12:55
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
收藏
得分:0 
以下是引用hxw84在2007-4-13 19:54:39的发言:
我的理解概括为以下几点
1.c=(a/=a++);可以等价写成c=a=a/a++;
2.a++的意思是先用a完成本语句,再将a+1
3.所以c=a=a/a++;等价于写成两句c=a=a/a;
a=a+1;
4.所以最后c=1 a=2
5.如果把int变成float,结果显示为0,那是你的输出格式忘改了,应该把"%d"也改成"%f"输出就是1.0000了
6.我的疑点是为什么程序写成
#include"stdio.h"
void main()
{
float a=5.0,c;
c=(a/=a++);
printf("%f",a);
}
输出是6.00000


我不知道你是什么编译器 我运行出来是1.00000 没错


   好好活着,因为我们会死很久!!!
2007-04-14 17:40
快速回复:[求助]本人乃新手。。可不可以解释一下这一韪
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016473 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved