标题: C语言新手上路 请赐教 [打印本页]

作者: 曾小羯    时间: 2020-8-7 19:22
标题: C语言新手上路 请赐教
        for(z=0;z<16;z++)
        z++;
        delay(100);

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


作者: wulin    时间: 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);
}
作者: 蓝魄    时间: 2020-8-8 08:27
当然会,因为这个变量是同一个变量,定义变量的时候就是设置了一个内存,这个内存叫做Z,当这个内存Z的值发生改变,而你又刚好用到它,那这个内存中的值为什么不会变呢;就好比你买了一个钱包,拿到手后你放了一百块钱进去,然后你上午买了一瓶1块钱的水,下午又买了一个20块钱的西瓜,中间这段时间如果你没放过钱进去那肯定是从99块钱里拿出的20块钱。为什么会变?因为花的是同一个钱包里的钱。
作者: 黄youhui    时间: 2020-8-8 08:39
会,因为他们是同一个变量,而且z++在for循环内部
作者: k9702    时间: 2020-8-8 09:12
你是不是发少了点东西,看上去好像是传递参数方面的相关知识
作者: LF575859258    时间: 2020-8-8 11:13
建议参考循环控制
作者: 红衣菇凉    时间: 2020-8-8 17:23
下面的z始终是15,没有在循环里面,不会变的
作者: 黄youhui    时间: 2020-8-10 08:16
红衣菇凉 发表于 2020-8-8 17:23
下面的z始终是15,没有在循环里面,不会变的

你该去温习一下C的for循环
作者: 张张不会单片机    时间: 2020-8-10 10:46
必然是会的,z在for循环内部,当进行z++的时候z肯定会变化的,所以最后z的结果是z++的最终结果
作者: yoxi    时间: 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;
}

作者: Roy-2010    时间: 2020-8-10 13:24
我也没玩过C和C➕➕。
作者: yxs520    时间: 2020-8-10 15:04
z是共用了  更改了一个z其他的z也就更改了
作者: abeimao    时间: 2020-8-10 16:44


当然会,z<16后跳出 for循环
作者: 阡_陌    时间: 2020-8-12 12:34
如果z是全局变量的话,会。
作者: kaixinqi    时间: 2020-8-12 17:50
楼主程序可能是漏掉了大括号,如果按照这个程序的话只有一行z++是被for循环控制。1.在同一个代码块({~}之间)内会发生变化
作者: kaixinqi    时间: 2020-8-12 17:53
楼主代码可能是漏掉了大括号{},for循环只控制之后的一条语句,即z++
而且for循环内就已经有了z++,再在代码块内写z++会让z+=2
同一个代码块({~}之间)内同名的变量就是同一个变量,在一处修改他的值其他地方调用都是一致的,所以会影响后面的值
作者: ccl09    时间: 2020-8-15 20:36
初学者不要懒,括号要加全
作者: 依利达    时间: 2020-8-16 11:35
会跟着变化,for循环没有大括号也执行之后的第一条语句,变成 for(z=0;z<16;z++){z++;}直到Z=16跳出循环执行下面的语句。
作者: aayon1979    时间: 2020-8-16 12:28
for语句没有循环体,p0口显示的都是固定的值,
作者: disorder    时间: 2020-8-16 12:31
当然会变,是同一个变量啊
作者: 黑糖333    时间: 2020-8-16 13:16
会的,z在for循环内部自加,后面加上括号就对了,可以编译试试
作者: Jerry2000    时间: 2020-8-16 15:33
缺少{ }  所以  P0=smguan[z];  不在循环范围内, 因此等for循环完成后,z=16,然后才会执行P0=smguan[16];
作者: Jerry2000    时间: 2020-8-16 15:33
因为缺少{ }
作者: i_could_have    时间: 2020-10-23 17:45
会变得,你可以单步执行看变量值
作者: 1256874530    时间: 2020-10-23 19:37
当然会




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1