求救~~为什么我定义的全局变量,在其他函数进行操作重新赋值后进过一个周期又被初始化,不能保存新值... 20

我是程序新手,公司刚给的任务,怎么都想不通,请各位大侠帮忙.......unsingnedintN1=100;unsignedintN2=100;....if(P3.0=... 我是程序新手,公司刚给的任务,怎么都想不通,请各位大侠帮忙.......
unsingned int N1=100;
unsigned int N2=100;
.
.
.
.
if(P3.0==0)
{
...
N1++;
....
}
if(P3.0==0)
{
...
N2++;
....
}
按按键的时候N1,N2的值是在往上面加,按完之后N1,N2的值又返回到100,这是为什么?请各位大侠解答......
我是程序新手,公司刚给的任务,怎么都想不通,请各位大侠帮忙......
includde(...).
unsingned int N1=100;
unsigned int N2=100;
main()
{
...
}.

if(P3.0==0)
{
...
N1++;
....
}
if(P3.0==0)
{
...
N2++;
....
}
按按键的时候N1,N2的值是在往上面加,按完之后N1,N2的值又返回到100,这是为什么?具体情况是我用UPD79F9211芯片写一个能改变占空比忽然频率的方波程序,N1N2是定时器的的值,N1改变频率,能改变占空比,但按按键的时候两者都改变了,之后过一会又回到了N1=100,N2=100的方波...跟没按按键前一样.....这是为什么,试了好多方法都不行.......
请各位大侠解答......
展开
 我来答
surplushaode
2011-08-19 · TA获得超过2055个赞
知道大有可为答主
回答量:2510
采纳率:0%
帮助的人:2378万
展开全部
我感觉是你的这两个定义放在了程序中的某个地方,且这个地方在程序运行过程中,会不断的执行,不是一次性赋值过后,下次就是保留的新值。不断的执行的话,就会出现你说的那样的情况的。比如说你放在了某个函数里面,或者是放在了主函数里面都是会出现这样的情况的。。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hy__345
2011-08-19 · 贡献了超过157个回答
知道答主
回答量:157
采纳率:0%
帮助的人:34.3万
展开全部
main函数中有没有定义N1和N2?
如果有,那么main里的N1和N2只是局部变量,一但出函数就释放了。(各个C程序书中都讲到的:局部变量如与全局变量重名那么局部变量将代替全局变量的含义。)
否则就不知道了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
官工丞相祠8
2011-08-18
知道答主
回答量:34
采纳率:0%
帮助的人:13.5万
展开全部
如果想定义一个变量只被初始化一次,下一次运用的是上次的计算后的值,那么这个变量要定义成静态局部变量,即在函数内定义如下static unsingned int N1=100;
静态全局变量是定义在函数外。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yanlin4371
2011-08-19
知道答主
回答量:13
采纳率:0%
帮助的人:6.9万
展开全部
本人觉得你的问题都写得有点不清,if语句是包含main函数里的还是在其它的函数里面啊?还要考虑你定义的变量到底是否是全局变量!那你要把那程序都写出来,那样才能给你清楚的解决这个问题!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
日晨之何展人9269
2011-08-18 · TA获得超过5.2万个赞
知道大有可为答主
回答量:3.3万
采纳率:0%
帮助的人:4444万
展开全部
使用static关键字,而不是在于全局变量。
前++比后++要好,如果不考虑特殊运用的话。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式