找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2246|回复: 24
打印 上一主题 下一主题
收起左侧

C语言新手上路 请赐教

  [复制链接]
跳转到指定楼层
楼主
ID:812266 发表于 2020-8-7 19:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        for(z=0;z<16;z++)
        z++;
        delay(100);

        P0=smguan[z];
这样子 z的数值变化时 那个中括号里的z会跟着变化吗 为什么?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2020-8-8 07:07 | 只看该作者
估计楼主抄错,如果for下面没有花括号只能执行for循环下面第一行指令。如是这样这个for循环没有实际意义。加上花括号P0=smguan[z]就是z初次为1,按2递增,依次为1.3.5.7.9.11.13.15,数码管按序显示1、3、5、7、9、B、D、F。

for(z=0;z<16;z++)//第一个表达式为给变量赋初值,只执行一次。
                  //第二个表达式为判断标准,若为真,则执行下面的指令,否则将跳出循环
                  //第三句为更改变量值的指令。然后再执行第二个表达式判断,如此重复直至为假结束循环。
{
     z++;
     P0=smguan[z];
     delay(100);
}
回复

使用道具 举报

板凳
ID:86926 发表于 2020-8-8 08:27 | 只看该作者
当然会,因为这个变量是同一个变量,定义变量的时候就是设置了一个内存,这个内存叫做Z,当这个内存Z的值发生改变,而你又刚好用到它,那这个内存中的值为什么不会变呢;就好比你买了一个钱包,拿到手后你放了一百块钱进去,然后你上午买了一瓶1块钱的水,下午又买了一个20块钱的西瓜,中间这段时间如果你没放过钱进去那肯定是从99块钱里拿出的20块钱。为什么会变?因为花的是同一个钱包里的钱。
回复

使用道具 举报

地板
ID:592807 发表于 2020-8-8 08:39 | 只看该作者
会,因为他们是同一个变量,而且z++在for循环内部
回复

使用道具 举报

5#
ID:609192 发表于 2020-8-8 09:12 | 只看该作者
你是不是发少了点东西,看上去好像是传递参数方面的相关知识
回复

使用道具 举报

6#
ID:254131 发表于 2020-8-8 11:13 | 只看该作者
建议参考循环控制
回复

使用道具 举报

7#
ID:384415 发表于 2020-8-8 17:23 | 只看该作者
下面的z始终是15,没有在循环里面,不会变的
回复

使用道具 举报

8#
ID:592807 发表于 2020-8-10 08:16 | 只看该作者
红衣菇凉 发表于 2020-8-8 17:23
下面的z始终是15,没有在循环里面,不会变的

你该去温习一下C的for循环
回复

使用道具 举报

9#
ID:812792 发表于 2020-8-10 10:46 | 只看该作者
必然是会的,z在for循环内部,当进行z++的时候z肯定会变化的,所以最后z的结果是z++的最终结果
回复

使用道具 举报

10#
ID:473159 发表于 2020-8-10 11:51 | 只看该作者
说多不意义,自己拿去编一下就明白
#include <stdio.h>
int  z;
int  main()
{
       
    for(z=0;z<16;z++)
                z++;
        printf("%d\n",z);
        //      delay(100);
//        P0=smguan[z];  //Z的值就只最后一次结果16
        return 0;
}
回复

使用道具 举报

11#
ID:809311 发表于 2020-8-10 13:24 | 只看该作者
我也没玩过C和C➕➕。
回复

使用道具 举报

12#
ID:812930 发表于 2020-8-10 15:04 | 只看该作者
z是共用了  更改了一个z其他的z也就更改了
回复

使用道具 举报

13#
ID:64817 发表于 2020-8-10 16:44 | 只看该作者


当然会,z<16后跳出 for循环
回复

使用道具 举报

14#
ID:813486 发表于 2020-8-12 12:34 | 只看该作者
如果z是全局变量的话,会。
回复

使用道具 举报

15#
ID:813624 发表于 2020-8-12 17:50 | 只看该作者
楼主程序可能是漏掉了大括号,如果按照这个程序的话只有一行z++是被for循环控制。1.在同一个代码块({~}之间)内会发生变化
回复

使用道具 举报

16#
ID:813624 发表于 2020-8-12 17:53 | 只看该作者
楼主代码可能是漏掉了大括号{},for循环只控制之后的一条语句,即z++
而且for循环内就已经有了z++,再在代码块内写z++会让z+=2
同一个代码块({~}之间)内同名的变量就是同一个变量,在一处修改他的值其他地方调用都是一致的,所以会影响后面的值
回复

使用道具 举报

17#
ID:347954 发表于 2020-8-15 20:36 | 只看该作者
初学者不要懒,括号要加全
回复

使用道具 举报

18#
ID:700528 发表于 2020-8-16 11:35 | 只看该作者
会跟着变化,for循环没有大括号也执行之后的第一条语句,变成 for(z=0;z<16;z++){z++;}直到Z=16跳出循环执行下面的语句。
回复

使用道具 举报

19#
ID:146782 发表于 2020-8-16 12:28 来自手机 | 只看该作者
for语句没有循环体,p0口显示的都是固定的值,
回复

使用道具 举报

20#
ID:805376 发表于 2020-8-16 12:31 | 只看该作者
当然会变,是同一个变量啊
回复

使用道具 举报

21#
ID:814627 发表于 2020-8-16 13:16 | 只看该作者
会的,z在for循环内部自加,后面加上括号就对了,可以编译试试
回复

使用道具 举报

22#
ID:814661 发表于 2020-8-16 15:33 | 只看该作者
缺少{ }  所以  P0=smguan[z];  不在循环范围内, 因此等for循环完成后,z=16,然后才会执行P0=smguan[16];
回复

使用道具 举报

23#
ID:814661 发表于 2020-8-16 15:33 | 只看该作者
因为缺少{ }
回复

使用道具 举报

24#
ID:833190 发表于 2020-10-23 17:45 | 只看该作者
会变得,你可以单步执行看变量值
回复

使用道具 举报

25#
ID:378665 发表于 2020-10-23 19:37 | 只看该作者
当然会
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表