2957|13

26

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

for循环的问题,求 j 的值 [复制链接]

for(i=0,j=0;i<10;i++)
{
    j++;
}
请问最终 j 的值是几?我个人感觉应该是循环依次 j 加1一次 啊,可是实验结果是 j =1,为什么?
j=0只是初值而已啊,不是每一次循环开始的时候 j都等于0吧。
此帖出自编程基础论坛

最新回复

那关键就是在if语句的功能了,你if语句判断为假的时候,当然不会加1了 这个if语句什么功能,我还真没看出来。。。  详情 回复 发表于 2014-6-26 15:43
点赞 关注
 

回复
举报

603

帖子

1

TA的资源

纯净的硅(中级)

沙发
 
把你实验用的程序发出来
此帖出自编程基础论坛
 
 
 

回复

1800

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
额,没这么试过
感觉有时候这类题目还有一些面试题都好无语
不实用而且代码可读性会变差
此帖出自编程基础论坛
 
 
 

回复

1800

帖子

0

TA的资源

五彩晶圆(初级)

4
 
因为好奇,特意用自己手头的资源试了下
IAR编译,8位单片机,结果LCD显示的值是10.
此帖出自编程基础论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(中级)

5
 
应该是10,看看是别的地方把他变成0了
此帖出自编程基础论坛
 
 
 

回复

4

帖子

1

TA的资源

一粒金砂(初级)

6
 
把其它代码贴出来瞅瞅,或者自己设置断点看一下;单单只有这段代码的话,应该是10
此帖出自编程基础论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

7
 
以你貼代碼來看,是循环依次 j 加1一次
也許是其他地方出錯了
此帖出自编程基础论坛
 
 
 

回复

1185

帖子

1

TA的资源

纯净的硅(高级)

8
 
加了10次就是10.怎么回事1呢。
此帖出自编程基础论坛
 
 
 

回复

2856

帖子

260

TA的资源

五彩晶圆(高级)

9
 
j在后面没有用到,编译器自动优化掉了吧。j是任何值都有可能
此帖出自编程基础论坛
 
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

10
 
真的很纳闷,确实如果只是这几句的话,j=10。不知道为什么在按键驱动的测试代码中,只是加了一个判断语句,就是1了。代码如下:
int main(void)
{
        int buttons_fd;
        char buttons[8] = {'0', '0', '0', '0', '0', '0', '0', '0'};

        buttons_fd = open("/dev/buttons", 0);
        if (buttons_fd < 0) {
                perror("open device buttons");
                exit(1);
        }

        for (;;) {
                char current_buttons[8];
                int count_of_changed_key;
                int i;
                if (read(buttons_fd, current_buttons, sizeof current_buttons) != sizeof current_buttons) {
                        perror("read buttons:");
                        exit(1);
                }

                for (i = 0, count_of_changed_key = 0; i < sizeof buttons / sizeof buttons[0]; i++) {
                        if (buttons[i] != current_buttons[i]) {
                                buttons[i] = current_buttons[i];
                                printf("%skey %d is %s", count_of_changed_key? ", ": "", i+1, buttons[i] == '0' ? "up" : "down");
                                count_of_changed_key++;
                        }
                }
               
                if (count_of_changed_key) {
                        printf("\n");
                }
               
               
        }

        close(buttons_fd);
        return 0;
}
烦请各位再看看。
               
此帖出自编程基础论坛
 
个人签名善良 孝顺 自信 乐观 积极 热心 不骄不躁 成熟 修养 气质 善解人意
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

11
 
在count_of_changed_key++;后面加一个打印语句,count_of_changed_key的值每次打印出来都是1,而不是每次都加1,一直到8。如果我把if语句去掉,就每次加1,直到8了。
此帖出自编程基础论坛
 
个人签名善良 孝顺 自信 乐观 积极 热心 不骄不躁 成熟 修养 气质 善解人意
 
 

回复

1800

帖子

0

TA的资源

五彩晶圆(初级)

12
 
那关键就是在if语句的功能了,你if语句判断为假的时候,当然不会加1了
这个if语句什么功能,我还真没看出来。。。
此帖出自编程基础论坛

点评

if语句用来判断按键的状态是否变化,如果被按下或释放,则条件为真。我怎么觉得这个if不影响 count_of_changed_key的值呢。  详情 回复 发表于 2014-6-26 16:15
 
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

13
 
sint27 发表于 2014-6-26 15:43
那关键就是在if语句的功能了,你if语句判断为假的时候,当然不会加1了
这个if语句什么功能,我还真没看出 ...

if语句用来判断按键的状态是否变化,如果被按下或释放,则条件为真。我怎么觉得这个if不影响 count_of_changed_key的值呢。
此帖出自编程基础论坛
 
个人签名善良 孝顺 自信 乐观 积极 热心 不骄不躁 成熟 修养 气质 善解人意
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

14
 
想明白了,因为每次只按一次按键,所以for语句每次执行,只有一个i满足条件,所以count只加1.按下一次按键时,for语句又从头开始了。谢谢大家啦~
此帖出自编程基础论坛
 
个人签名善良 孝顺 自信 乐观 积极 热心 不骄不躁 成熟 修养 气质 善解人意
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表