找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3154|回复: 24
收起左侧

C语言新手上路 请赐教

  [复制链接]
ID:812266 发表于 2020-8-7 19:22 | 显示全部楼层 |阅读模式
        for(z=0;z<16;z++)
        z++;
        delay(100);

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

回复

使用道具 举报

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循环内部
回复

使用道具 举报

ID:609192 发表于 2020-8-8 09:12 | 显示全部楼层
你是不是发少了点东西,看上去好像是传递参数方面的相关知识
回复

使用道具 举报

ID:254131 发表于 2020-8-8 11:13 | 显示全部楼层
建议参考循环控制
回复

使用道具 举报

ID:384415 发表于 2020-8-8 17:23 | 显示全部楼层
下面的z始终是15,没有在循环里面,不会变的
回复

使用道具 举报

ID:592807 发表于 2020-8-10 08:16 | 显示全部楼层
红衣菇凉 发表于 2020-8-8 17:23
下面的z始终是15,没有在循环里面,不会变的

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

使用道具 举报

ID:812792 发表于 2020-8-10 10:46 | 显示全部楼层
必然是会的,z在for循环内部,当进行z++的时候z肯定会变化的,所以最后z的结果是z++的最终结果
回复

使用道具 举报

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;
}
回复

使用道具 举报

ID:809311 发表于 2020-8-10 13:24 | 显示全部楼层
我也没玩过C和C➕➕。
回复

使用道具 举报

ID:812930 发表于 2020-8-10 15:04 | 显示全部楼层
z是共用了  更改了一个z其他的z也就更改了
回复

使用道具 举报

ID:64817 发表于 2020-8-10 16:44 | 显示全部楼层


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

使用道具 举报

ID:813486 发表于 2020-8-12 12:34 | 显示全部楼层
如果z是全局变量的话,会。
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

ID:347954 发表于 2020-8-15 20:36 | 显示全部楼层
初学者不要懒,括号要加全
回复

使用道具 举报

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

使用道具 举报

ID:146782 发表于 2020-8-16 12:28 来自手机 | 显示全部楼层
for语句没有循环体,p0口显示的都是固定的值,
回复

使用道具 举报

ID:805376 发表于 2020-8-16 12:31 | 显示全部楼层
当然会变,是同一个变量啊
回复

使用道具 举报

ID:814627 发表于 2020-8-16 13:16 | 显示全部楼层
会的,z在for循环内部自加,后面加上括号就对了,可以编译试试
回复

使用道具 举报

ID:814661 发表于 2020-8-16 15:33 | 显示全部楼层
缺少{ }  所以  P0=smguan[z];  不在循环范围内, 因此等for循环完成后,z=16,然后才会执行P0=smguan[16];
回复

使用道具 举报

ID:814661 发表于 2020-8-16 15:33 | 显示全部楼层
因为缺少{ }
回复

使用道具 举报

ID:833190 发表于 2020-10-23 17:45 | 显示全部楼层
会变得,你可以单步执行看变量值
回复

使用道具 举报

ID:378665 发表于 2020-10-23 19:37 | 显示全部楼层
当然会
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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