| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 983 人关注过本帖
标题:一个奇怪的现象,帮解释!
只看楼主 加入收藏
形影随从
Rank: 1
等 级:新手上路
威 望:1
帖 子:188
专家分:0
注 册:2005-3-15
收藏
得分:0 
IF后面加了 ; 号表示他是一条语句了。他就不在是判断语句了,不管他里面的结果是真是假,他的下一条语名都会执行。最后输出的结果会因为 IF 表达式里面的赋值的关系运算改变的。
x=1;y=1;z=1;
if((x=2)&&(y=2)&&(z=2));
printf("%d,%d,%d\n",x,y,z);

这个结果我想能看懂的吧!因为他的运算结果为真,三个都能赋到值。

x=1;y=1;z=1;
if ((x=0)&&(y=2)&&(z=2));
printf("%d,%d,%d\n",x,y,z);

这个是与关系,与关系中有一个为假就为假。计算机在检测X=0时就为假了,所以后面的两个就不会运算了。

x=1;y=1;z=1;
if ((x=2)||(y=2)||(z=2));
printf("%d,%d,%d\n",x,y,z);

这个是或关系,或关系中一个为真就为真。检测第一个X=2时就为真了,所以后面的也不会运算了。

x=1;y=1;z=1;
if ((x=0)||(y=2)||(z=2));
printf("%d,%d,%d\n",x,y,z);

这个也是或关系,检测到第一个为假时,他会继续检测第两个,当第二个为真时他就结束了。

x=1;y=1;z=1;
if ((x=0)&&(y=2)||(z=2));
printf("%d,%d,%d\n",x,y,z);

这是一个与和或的综合运算关系,与的优先级比或的优先级要高,前面两个进行与运算,第一个是假,所以第二个他不会运算得到与运算为假,他再和第三个进行或运算,  和上面一样的道理,第三个为进行赋值。

不知道这个样能不能让你看懂,可能没能表达清楚意思,总之,这要理解透与和或关系的运算就好明白了。

2005-03-17 22:15
poppylx
Rank: 1
等 级:新手上路
帖 子:367
专家分:0
注 册:2004-9-27
收藏
得分:0 
佩服

[此贴子已经被作者于2005-3-18 0:45:07编辑过]



动于心而静如水
2005-03-18 00:42
快速回复:一个奇怪的现象,帮解释!
数据加载中...
 
   



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

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