| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1644 人关注过本帖
标题:曾怡讲的谭浩强教程中的一个错误?
只看楼主 加入收藏
spider1987
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2007-2-18
收藏
得分:0 

看来我还是没有解释错

2007-04-13 16:59
tvkl
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-4-7
收藏
得分:0 

我看帖后的总结,供参考:
例:
#include "stdio.h"
#include "conio.h"

void main()
{ int a=1;
printf("%d\n",a=3*a,3*a);
getch();
}

输出结果为3。
此处并不是一个逗号表达式。编译器一般是从右到左调用函数。故改为
printf(“%d,%d\n",a=3*a,3*a);输出值为3,3.改为Printf("%d,%d,\n",3*a,a=3*a);输出结果为9,3.
要注意赋值运算符的优先级大于逗号表达式。所以用到逗号表达式时要用()。

此处是严格按输出格式控制输出。


判断关键,看有没有()号。


没有解决不了的问题,时间而已!
2007-04-13 19:12
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
printf()函数调用时,是从右到左,
所以printf("%d\n",a=3*a,3*a);先执行3*a,再执行a=3*a
结果是:3
printf("%d %d\n",a=3*a,3*a);
结果
3 3

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-04-13 21:18
hahahan
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-4-10
收藏
得分:0 
回复:(tvkl)我看帖后的总结,供参考:例:#include...

补充一下,个人理解:

在计算的时候是从右往左,在输出的时候是从左往右。

#include "stdio.h"
#include "conio.h"

void main()
{ int a=1;
printf("%d\n",3*a,a=3*a);
getch();
}
结果是 9,

说明计算时是先算a=3*a ,再算3*a。 所以结果本应为 9 3 。 但是输出从左往右,此处只有一个%d ,所以只输出了 左边的 9

不知这样理解对不?


没事儿你就多到这儿转转
2007-04-14 10:39
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
嗯,应该是这样理解,注意格式控制是从左向右的,函数调用一般是自右向左的,但有的编译器函数的调用也是从左向右,最后的结果就会是3

雁无留踪之意,水无取影之心
2007-04-14 11:13
快速回复:曾怡讲的谭浩强教程中的一个错误?
数据加载中...
 
   



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

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