| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2079 人关注过本帖
标题:[求助]请教几道与逻辑运算及分支结构的问题
只看楼主 加入收藏
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
以下是引用cdmalcl在2006-9-16 14:39:05的发言:

???
怎么和我们这的一个老师出的考试题一样

if后面没加{}
所以只不执行z=x 

那我想再请教亮哥两道题目
[问题求助]请教两道有关c语言分支结构的问题
以下程序的输出结果是
#include"stidio.h"
main()
{int x=1;
if(x=2)
printf("OK");
else if(x<2)printf("%d\n",x);
else printf("Quit");
}
答案是OK,为什么不是1啊?

以下程序的输出结果是
main()
{int x=2,y=-1,z=2;
if(x<y)
if(y<0)z=0;
else z+=1;
printf("%d\n",z);
}
答案是2,为什么不是3啊?

2006-09-16 14:46
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用inku在2006-9-16 14:46:20的发言:

那我想再请教亮哥两道题目
[问题求助]请教两道有关c语言分支结构的问题
以下程序的输出结果是
#include"stidio.h"
main()
{int x=1;
if(x=2) //if()t条件为真(2).所以会执行打印OK
printf("OK");
else if(x<2)printf("%d\n",x);//这里如果没有else的话也会执行.
else printf("Quit");
}
答案是OK,为什么不是1啊?

以下程序的输出结果是
main()
{int x=2,y=-1,z=2;
if(x<y)
if(y<0)z=0;
else z+=1;
printf("%d\n",z);
}
答案是2,为什么不是3啊?

if(x<y)
{
if(y<0)z=0;
else z+=1;
}
printf("%d\n",z); 匹配问题.


倚天照海花无数,流水高山心自知。
2006-09-16 14:52
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用inku在2006-9-16 14:46:20的发言:

那我想再请教亮哥两道题目
[问题求助]请教两道有关c语言分支结构的问题
以下程序的输出结果是
#include"stidio.h"
main()
{int x=1;
if(x=2)/*符值运算*/
printf("OK");
else if(x<2)printf("%d\n",x);
else printf("Quit");
}
答案是OK,为什么不是1啊?

以下程序的输出结果是
main()
{int x=2,y=-1,z=2;
if(x<y)
if(y<0)z=0;
else z+=1;  else和最近无对应if对应(没{}指定的时候)
printf("%d\n",z);
}
答案是2,为什么不是3啊?

2006-09-16 14:57
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 

to:nuciewth
因为x>y所以
{
if(y<0)z=0;
else z+=1;
}
这几步根本就没有执行过,所以z的值还是和原来一样是2对吗?是这样理解的吗?

2006-09-16 15:00
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

倚天照海花无数,流水高山心自知。
2006-09-16 15:02
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
main()
{int x=1;
if(x=2)/*符值运算*/
这符值运算为什么就是打印OK,我知道反正x<2就要打印出x的值,因为一开始定义了x=1,所以我觉得答案是1,不知道我错在哪里了?
2006-09-16 15:23
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
因为整个(x=2)整个表达式的值就是1了 而且x=2
2006-09-16 15:25
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
if(x=2),括号里的表达式值为2,故条件成立.

#include<stdio.h>
main()
{
int x;
printf("%d",x=2);
getch();
}

倚天照海花无数,流水高山心自知。
2006-09-16 15:38
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
以下是引用cdmalcl在2006-9-16 15:25:12的发言:
因为整个(x=2)整个表达式的值就是1了 而且x=2

是不是因为(x=2)这个表达是1,所以等价与if(x==1),执行打印出OK这个语句,又因为一开始就定义了x=1,所以符合if(x==1),所以答案是OK,我的理解对吗?

2006-09-16 16:14
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用inku在2006-9-16 16:14:38的发言:

是不是因为(x=2)这个表达是1,所以等价与if(x==1),执行打印出OK这个语句,又因为一开始就定义了x=1,所以符合if(x==1),所以答案是OK,我的理解对吗?

不不不
你可别这么想
你就按照我说的想就行

if(x=2) 这个地方起了两个效果
一个是判断通过 是 判断  
(x=2)表达式等于1 表达式为1 不代表x怎么样
第二个效果就是把2符给x
也就是这个时候 x下存储的值是2了 

第二个效果在这个程序中并没起到作用

而第一个效果判断if条件成立
进行 是 语句的执行
也就是运行了printf("OK");

2006-09-16 16:21
快速回复:[求助]请教几道与逻辑运算及分支结构的问题
数据加载中...
 
   



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

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