| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 863 人关注过本帖
标题:C初学者求助
取消只看楼主 加入收藏
南国迦叶
Rank: 2
等 级:论坛游民
帖 子:46
专家分:20
注 册:2010-7-9
结帖率:88.24%
收藏
已结贴  问题点数:20 回复次数:2 
C初学者求助
例1,设a=5,b=6,c=7,d=8,执行(m=a>b)&&(n=c>d)后n的值为
A.1
B.2
C.3
D.4
我的分析是:(m=a>b)&&(n=c>d)相当于(m=0)&&(n=0),两个为假的逻辑值的逻辑与值应该为0
所以,我自己的最后结果是0。但是没有结果为0的选项,请各位大侠分析

例2,下列程序段执行后,变量k、x、y、z的值依次为
int k,x,y,z;
x=y=z=1;
k=x++&&y++||z++;
A.1、2、2、1
B.1、2、2、2
C.0、2、2、1
D.0、2、2、2
首先,怀疑自己对自增自减运算符“++”和“--”在变量前和变量后的运用理解还是不透
我的理解是,z++表示先使用z,然后再使其值加1;++z表示先将z的值加1,然后再使用z
所以k=x++&&y++||z++等价于k=2&&2||2,等价于k=1||2,即结果为1(值为真),所以答案是B
由于没有参考答案,所以不确定自己的答案。
我想知道的是如果B是正确答案的话,那么k=x++&&y++||z++可以分解为  k=x&&y||z
                                                                x=x+1
                                                                y=y+1
                                                                z=z+1
不是说“++”和“--”的优先级高于“&&”和“||”吗,那就应该分解为
                                                                x=x+1
                                                                y=y+1
                                                                z=z+1
                                                                k=x&&y||z
实际上应该是那一种理解,我矛盾啊,都弄糊涂了......
2010-07-22 15:31
南国迦叶
Rank: 2
等 级:论坛游民
帖 子:46
专家分:20
注 册:2010-7-9
收藏
得分:0 
回复 2楼 do8do8do8
不明白,c>d为假,所以c>d的值就是0啊,同理a>b的值也是0啊,再将两个0分别付给m和n,之后再求他们 的逻辑与值。
不是这样的吗?
2010-07-22 16:03
南国迦叶
Rank: 2
等 级:论坛游民
帖 子:46
专家分:20
注 册:2010-7-9
收藏
得分:0 
回复5楼 sunyh1999
我明白了5楼对例1的分析,顺便问一下是不是凡是没有初始化的值都为非0啊?

另外,大家能帮我分析下2楼的为什么一来就说k的值为显然为1啊,是如何那么快判断的?因为k后面是赋值运算符,运算级别低于后面的自增自减运算符级别,我的理解是k的值至少应该在确定x++后才能定吧
真的不理解,高手能详细解释一下例2吗,不胜感激!
2010-07-22 22:29
快速回复:C初学者求助
数据加载中...
 
   



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

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