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

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

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

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

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

明白了,如果程序要是再加一句输出x的值,那么x的值就是2对吗?

2006-09-16 16:31
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
怎么不看看我的呢.
if(x=2),括号内的表达式是2 而不是1.整个if语句为真所以执行printf("OK");

倚天照海花无数,流水高山心自知。
2006-09-16 16:35
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
以下是引用nuciewth在2006-9-16 16:35:20的发言:
怎么不看看我的呢.
if(x=2),括号内的表达式是2 而不是1.整个if语句为真所以执行printf("OK");

if(x=2),括号内的表达式是2 而不是1,这句话我还没完全理解.

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

if(x=2),括号内的表达式是2 而不是1,这句话我还没完全理解.

一个符值也象函数一样要有个返回值(近似的这么认为)
那这个符值表达式的值就是最后赋予的值 也就是 2
判断表达式的值是1还是0 看表达式内部的式子是不是0

2006-09-16 16:42
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
以下是引用cdmalcl在2006-9-16 16:42:10的发言:

一个符值也象函数一样要有个返回值(近似的这么认为)
那这个符值表达式的值就是最后赋予的值 也就是 2
判断表达式的值是1还是0 看表达式内部的式子是不是0

明白了,谢谢!
那我想再问一道题目
以下程序输出结果是
#include"stdio.h"
main()
{int a=5,b=8,c=3,max;
max=a;
if(c>b)
if(c>a)
max=c;
else
if(b>a)
max=b;
printf("max=%d\n",max);
}
答案是5,可是我觉得是8,因为
if(c>b)
if(c>a)
max=c;
else
if(b>a)
max=b;

这些语句都没有被执行,道理是c<b,所以b的值应该维持不变8,我错在哪里?
请两位高手指教.

2006-09-16 16:59
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
就是这样,这个只是个细节问题,只要知道赋值表达式的值即是x的值也是表达式的值.

倚天照海花无数,流水高山心自知。
2006-09-16 17:01
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用inku在2006-9-16 16:59:11的发言:

明白了,谢谢!
那我想再问一道题目
以下程序输出结果是
#include"stdio.h"
main()
{int a=5,b=8,c=3,max;
max=a;
if(c>b)
{
if(c>a)
max=c;
else
{
if(b>a)
max=b;
}
}
printf("max=%d\n",max); //它的值还是a
}
答案是5,可是我觉得是8,因为
if(c>b)
if(c>a)
max=c;
else
if(b>a)
max=b;

这些语句都没有被执行,道理是c<b,所以b的值应该维持不变8,我错在哪里?
请两位高手指教.


倚天照海花无数,流水高山心自知。
2006-09-16 17:05
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
if(c>b)
if(c>a)
max=c;
else
if(b>a)
 max=b;

这个问题在上面的帖子说过了
2006-09-16 17:05
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
那我觉得我分析得没错呀,可是为什么我的答案是错的?
2006-09-16 17:17
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
看13楼
2006-09-16 17:28
快速回复:[求助]请教几道与逻辑运算及分支结构的问题
数据加载中...
 
   



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

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