| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 870 人关注过本帖
标题:c中的基本问题
只看楼主 加入收藏
渴望进取
Rank: 1
来 自:四川
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-5-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
c中的基本问题
main()
{ int n=2,k=0;
while(k++&&n++>2);
printf("%d %d",k,n);
}
为什么结果是 1 2啊?麻烦说详细点
2010-06-12 15:24
渴望进取
Rank: 1
来 自:四川
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-5-26
收藏
得分:0 
运行环境tc2.01
2010-06-12 15:25
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:3 
分析不出来,这题目……有点难度……

我很懒,但我讨厌别人说我懒……
2010-06-12 15:38
渴望进取
Rank: 1
来 自:四川
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-5-26
收藏
得分:0 
兄弟姐妹们帮忙啊!!!
2010-06-12 15:48
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1704
专家分:4344
注 册:2007-12-27
收藏
得分:12 
k++&&n++>2
根据优先级概念,理解为
(k++) && (n++>2)
也就是说,这是个逻辑与,按照逻辑与的法则,只有左侧为真,才继续计算右侧。
本例++在k后面,所以逻辑与左侧的表达式取k的原值0,也就算是假的,所以逻辑与右侧被跳过,整个表达式为假,不执行循环。
接着k后面的++发生作用,使k变成1。
收到的鲜花
  • 渴望进取2010-06-12 16:12 送鲜花  3朵   附言:我很赞同

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-06-12 16:07
rib
Rank: 4
等 级:业余侠客
帖 子:95
专家分:252
注 册:2009-3-30
收藏
得分:5 
程序代码:
#include <stdio.h>
int main(void)
{
    int n=2,k=1;
    while (k++&&n++>2);
    printf("%d %d",k,n);
    return 0;
}
刚才我运行了下这个如果K为1的话 结果为2  3

这样是否可以理解如果K为0的话为假直接退出WHILE不进行后面的判断

坐等高手解答为何这样!
2010-06-12 16:07
tswcbyy777
Rank: 2
等 级:论坛游民
帖 子:8
专家分:14
注 册:2010-6-2
收藏
得分:0 
这程序是这么运行的,首先赋值,然后到while语句,判断k++&&n++>2,首先检测K++,这语句因为k=0,所以K++的逻辑结果是“0”,然后K的值变为1,由&&可知,当前面一个为“0”,这结果肯定为0,所以没有计算后面的n++>2,即n还是等于2,因为k++&&n++>2的结果为0,所以跳出while,直接输出,就是k=1,n=2
2010-06-12 16:12
渴望进取
Rank: 1
来 自:四川
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-5-26
收藏
得分:0 
回复 5楼 forever74
谢谢了
2010-06-12 16:13
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 6楼 rib
是个常识,
condition1 && conditionn2
如果 condition1 为假, 那么整个表达式必然为假。所以 condition2 自然没有必要再判断了。

我就是真命天子,顺我者生,逆我者死!
2010-06-12 18:27
monk02698
Rank: 1
等 级:新手上路
帖 子:13
专家分:7
注 册:2010-5-31
收藏
得分:0 
5楼回答是正确的
2010-06-12 23:11
快速回复:c中的基本问题
数据加载中...
 
   



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

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