| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 625 人关注过本帖
标题:几个小问题
只看楼主 加入收藏
feitianma
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-3-15
收藏
 问题点数:0 回复次数:8 
几个小问题
各位朋友,大家好!请帮我解决这些问题,在下感激不尽!
(1) main()
{int a=3;clrscr();
printf("%d,%d",a,a*=a++);}此题结果为:12,12
而:
(2) main()
{int a=3,b;
b=a*=a++;clrscr();
printf("%d,%d",a,b);}此题结果为:10,9
另外:
(3) main()
{int a=3,b; clrscr();
b=a+=a++;
printf("%d,%d",a,b);
}此题结果为:7,7
而:
(4) main()
{int a=3; clrscr();
printf("%d,%d",a,a+=a++);}
此题结果为:7,7
请问:
(1)和(2)为何结果不相同?(3)和(4)结果为何相同?
它们的运算规则不同吗?
请各位朋友不吝赐教!!
搜索更多相关主题的帖子: int main clrscr 结果 
2006-04-17 08:00
食脑族
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-3-8
收藏
得分:0 
[原创]看看原因吧~~!!
Turbo C 以及 MS C 在执行算术运算的时候一般是 自右向左 的~~~~~再看看吧~~!
不过第二个程序的结果好象不对哦~~!!!

☆♂ 冷血+倔强+现实= 我的态度! 树不要皮,必死无疑~! 人不要脸,天下无敌~! ♀☆
2006-04-17 08:44
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
别着急``看看书慢慢分析就会懂``

我的原则很简单:不做不喜欢的事!
2006-04-17 10:30
kandy
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-4-16
收藏
得分:0 

不急!~~
好好看!~就可以拉!~

2006-04-17 11:40
最多才七个字啊
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-4-17
收藏
得分:0 
#include<stdio.h>
main()
{int a=3,b;
b=a*=a++;
printf("%d,%d",a,b);}
和#include<stdio.h>
main()
{int a=3;
printf("%d,%d",a,a*=a++);}
结果都是10,9啊 怎么搞的 我用c-free运行的
没什么不同的啊
a*=a++ 好象是自左向右运行的吧 就是a=3*3 然后++

#include<stdio.h>
main()
{int a=3,b=0;
b=a+=a++;
printf("%d,%d",a,b); }
这个程序该是 7,6吧
因为a+=a++ 就是 a=3+3 然后运行++ a就变成7了 但是a++的值还是6就付值给b了 所以b=6

#include<stdio.h>
main()
{int a=3;
printf("%d,%d",a,a+=a++);}


这个程序结果也是一样的啊 7,6
我不知道是不是c-free的运行结果不一样哦
我刚运行了下 的确是那样子

编程的学习犹如我的头像:朦胧、抽象、有待梳理啊
2006-04-17 12:03
feitianma
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-3-15
收藏
得分:0 
各位:
我是在TC2.0上运行的,结果没问题。我想知道的是为何结果跟我们预计的不一样,有何运算规则?

2006-04-17 18:27
神仙
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-4-14
收藏
得分:0 
编译器不一样,结果是不一样的,这个是编译器中的编译机的文法差异造成的,不用理会这些,再说上面列出的那些例子在实际当中是不允许写的,那都不是良好的代码格式,所以不用太怎么在意,不过为了学懂C,适当的看看是可以的
2006-04-17 20:38
风影—人生
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-4-6
收藏
得分:0 

运算顺序是与各编辑器有关!

如果你想要你预计的结果
那就不要打一个变量的自增与自减和该变量放同一个输出语句中

1) main()
{int a=3;clrscr();
printf("%d,%d",a,a*=a++);}此题结果为:12,12
而:
(2) main()
{int a=3,b;
b=a*=a++;clrscr();
printf("%d,%d",a,b);}此题结果为:10,9

像(2)那样就不管编辑器如何运算,但结果都只有一个,就是10和9

2006-04-18 10:17
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

其他三个可以理解,却怎么也搞不懂第二个程序的结果,觉得不可思议!
版主能不能进来解释下?


对不礼貌的女生收钱......
2006-04-19 20:03
快速回复:几个小问题
数据加载中...
 
   



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

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