| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 518 人关注过本帖
标题:各位大神帮忙看一下为什么出现这个结果?谢谢
只看楼主 加入收藏
刘俊杰
Rank: 2
等 级:论坛游民
帖 子:20
专家分:21
注 册:2014-12-6
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:7 
各位大神帮忙看一下为什么出现这个结果?谢谢
#include<stdio.h>
main(){
    int i,k;
    for(i=0;i<6;i++&&k++)
    printf(" %d  %d",i,k);
}
结果 0  23  1  23  2  24  3  25  4  26  5  27
2014-12-21 22:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
为什么呢?我也想知道。

授人以渔,不授人以鱼。
2014-12-21 22:20
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
楼主是不是在VC6用Debug模式编译的?
2014-12-21 22:28
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:10 
k值由于没有初始化,所以一开始的值是随机的,23这个数没有意义。值得探讨的是它的增量。

i在循环中顺序显示为 0 1 2 3 4 5,这个就不解释了。

而k在循环中顺序显示为 23 23 24 25 26 27。为什么它没有像i那样呈一个增量为1的等差数列,而第一次与第二次输出的值一样呢?

原因在于for循环的迭代部分你的表达式是“i++&&k++”。

关系运算符有个“短路”特性。当第一次迭代时 i = 0,它使得逻辑与的表达结果必然为假,所以不再继续运算。所以k++这部分压根没有执行。

重剑无锋,大巧不工
2014-12-21 22:37
刘俊杰
Rank: 2
等 级:论坛游民
帖 子:20
专家分:21
注 册:2014-12-6
收藏
得分:0 
回复 3楼 zklhp
我接触C没多久,我用的是我们老师拷给我们的编译器codeblocks
2014-12-21 22:40
刘俊杰
Rank: 2
等 级:论坛游民
帖 子:20
专家分:21
注 册:2014-12-6
收藏
得分:0 
回复 4楼 beyondyf
谢谢,上次我问我老师,他说不是他写的程序,不知道我在问什么,哎,还海归呢,瞬间无语
2014-12-21 22:44
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:10 
程序代码:
#include<stdio.h>

int main(void) {
    int i, k;

    for(k = 0, i = 0; i < 6; k++, i++) {
        printf("i=%d k=%d\t", i, k);
    }

    printf("\n-------------------------------------------------\n\n");

    for(k = 0, i = 0; i < 6; ++i && ++k) {
        printf("i=%d k=%d\t", i, k);
    }

    printf("\n\n");

    for(k = 0, i = 0; i < 6; k++ && ++i) {
        printf("i=%d k=%d\t", i, k);
    }

    printf("\n\n");

    for(k = 0, i = 0; i < 6; k++ && i++) {
        printf("i=%d k=%d\t", i, k);
    }

    printf("\n\n");

    for(k = 0, i = 0; i < 6; ++k && ++i) {
        printf("i=%d k=%d\t", i, k);
    }

    printf("\n\n");

    for(k = 0, i = 0; i < 6; ++k && i++) {
        printf("i=%d k=%d\t", i, k);
    }

    printf("\n\n");

    for(k = 0, i = 0; i < 6; i++ && k++) {
        printf("i=%d k=%d\t", i, k);
    }

    printf("\n\n");
    return 0;
}

图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 longwu9t 于 2014-12-23 10:25 编辑 ]

Only the Code Tells the Truth             K.I.S.S
2014-12-21 22:51
C_fans
Rank: 2
等 级:论坛游民
帖 子:8
专家分:14
注 册:2014-12-23
收藏
得分:0 
变量K没有赋值就用,当然后果难以预测!要是指针也这样,系统有时会死循环甚至崩溃.
2014-12-23 09:44
快速回复:各位大神帮忙看一下为什么出现这个结果?谢谢
数据加载中...
 
   



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

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