| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1394 人关注过本帖
标题:解答下此题
只看楼主 加入收藏
once_again
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-10-4
收藏
得分:0 
int x,y=-2,z=0;
if(x=y=z) x=4;
printf("\t%d\t%d\n",x,y);

z=0,将z的值付给x,y所以x,y都为0。但同时x=y=z表达式的值也为0了。所以条件不成立,x=4未被执行。打印出的x,y也就为0,0了

要想学好六脉神剑就得先学好北冥神功!!!!
2007-10-17 20:16
once_again
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-10-4
收藏
得分:0 
if(x=y)和if(x==y)在语法上都是对的,只不过x==y如果x的值与y相等则表达式的值为1,不等则为0。而x=y的表达式的值就是y的值,所以如果y=0,则表达式的值为零,条件不成立,为其他则恒成立

[此贴子已经被作者于2007-10-19 13:11:33编辑过]



要想学好六脉神剑就得先学好北冥神功!!!!
2007-10-17 20:22
zmfttkl
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2007-7-1
收藏
得分:0 
x=y=z
相当一个连续的赋值;这在初始化是是不行的 !

2007-10-18 10:30
给冰加温
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-3-9
收藏
得分:0 

我想做这样一个修改:
#include<stdio.h>
void main()
{
int x,y=-2,z=1; //z=1
if(x=y=z) x=4;
printf("\t%d\t%d\n",x,y);
}

这里if(x=y=z) x=4; 前面的朋友解释过了x=y=z=1;等效与if(x=1) x=4;
如果x为真(即不为零)就执行x=4,否则跳过这句,所以这里的结果为: 4 1
不知道这样解释可否??

2007-10-18 11:02
vinyie
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-10-7
收藏
得分:0 
答案当然是0和0,这是没有问题的,原因:一方面,x=y=z应该理解成y=z;x=y(这两赋值语句的顺序不能倒过来),所以x,y的值均为0;其次,这里的if语句就是if(x),而x为0,即为假,所以x=4并不执行。所以最终x,y的值均为0。附,请注意if(x=y)和if(x==y)的区别,前者是将y的值赋于x,条件成立与否看x的值是否不为0;后者则判断x与y是否相等,以决定条件成立与否。
2007-10-18 14:54
jzldf180
Rank: 2
等 级:论坛游民
帖 子:21
专家分:10
注 册:2007-10-10
收藏
得分:0 
vc6下程序运行的结果是      0      0
2007-10-18 15:50
快速回复:解答下此题
数据加载中...
 
   



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

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