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


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

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

但是曾怡说这个3是3*a的值。

我试着改了一下:
#include "stdio.h"
#include "conio.h"

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

按照曾怡的说法,结果应为4。但是实际结果还是 3



????是讲错了么?还是结果与编译器有关。

搜索更多相关主题的帖子: 谭浩强 曾怡 教程 
2007-04-13 10:24
spider1987
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2007-2-18
收藏
得分:0 
只有一个%d 却要输出两个a
那么肯定输出的是
a=3*a
2007-04-13 10:41
spider1987
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2007-2-18
收藏
得分:0 
以上只是个人见解。。。。。等楼下的高手回答。。。顺便学习
2007-04-13 10:41
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 

应该与编译器无关,本人认为曾怡说的是错的,我认为第一个程序中的3是a=3*a的值,虽然大多数编译器调用参数的时候是从右开始调用,但这个地方是严格根据格式控制来的,即一对一,自左向右,比如运行如下程序

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

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

得到的结果肯定是第三个结果为一个不可预料的值,而不是第一个


雁无留踪之意,水无取影之心
2007-04-13 10:45
spider1987
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2007-2-18
收藏
得分:0 
PC大哥解释的8错。。。。学习一下
2007-04-13 10:46
spider1987
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2007-2-18
收藏
得分:0 
#include "conio.h"
借LZ帖子问个很菜的问题。。。。
这个头文件是干嘛的
2007-04-13 10:48
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用hahahan在2007-4-13 10:24:43的发言:


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

void main()
{ int a=1;
printf("%d\n",a=3*a,3*a);//只给A重新赋了一次值,即A=3.但输出的是表达式的最后一个,即3*A=9.
getch();
}
输出结果为
3

但是曾怡说这个3是3*a的值。

我试着改了一下:
#include "stdio.h"
#include "conio.h"

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

按照曾怡的说法,结果应为4。但是实际结果还是 3



????是讲错了么?还是结果与编译器有关。


倚天照海花无数,流水高山心自知。
2007-04-13 11:00
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
nuciewth,一般编译器调用函数的时候是从右向左调用的

雁无留踪之意,水无取影之心
2007-04-13 11:02
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
你去输出这个知道了

printf("%d,%d\n",a=3*a,3*a);//结果是3,3,而不是3,9

雁无留踪之意,水无取影之心
2007-04-13 11:03
hahahan
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-4-10
收藏
得分:0 

[此贴子已经被作者于2007-4-13 11:06:41编辑过]


没事儿你就多到这儿转转
2007-04-13 11:05
快速回复:曾怡讲的谭浩强教程中的一个错误?
数据加载中...
 
   



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

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