标题:
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