有对C语言熟悉的吗?我对if语句有点小小的疑问,请您解答。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有对C语言熟悉的吗?我对if语句有点小小的疑问,请您解答。。相关的知识,希望对你有一定的参考价值。

我在玩单片机实验板时编写的一个小程序,其中有两个if语句。
第一个:
num++;
if(num==10)

.......


第二个:
num1++;
if(num1==10)
num=0;

按照我之前的理解,程序是一步步顺序执行的,对于第一个语句,若不满足if条件,应跳过,执行大括号后面的语句。但是我在仿真的时候,不满足条件时,程序就一直执行num++,直到其值为10,然后进入if语句。

对于第二个语句,则没有等待一直执行num1++,,而是不满足时直接跳过,执行后面的语句。这是怎么回事,您能给我解答一下吗?

完整的程序为:
#include<reg52.h>
#define uchar unsigned char;
#define uint unsigned int;
sbit dula=P2^6;
sbit wela=P2^7;
sbit led1=P1^0;
uchar code table[]=
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71;
void delayms(unit);
void display(uchar,uchar);
uchar num,num1,num2,shi,ge;
void main()

TMOD=0x11;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
while(1)

display(shi,ge);


void display(uchar shi,uchar ge)

dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(5);
dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delayms(5);

void delayms(uint xms)

uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);

void To_time()interrupt 1;


TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num1++;
if(num1==4)

num1=0;
led1=~led1;


void T1_time1()interrupt 3


TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
num2++;
if(num2==20)

num2=0;
num++;
if(num==60)
num=0;
shi=num/10;
ge=num%10;


这是一个单片机C语言,遵循C语言语法。它的功能是间隔一秒进行60秒的计数,用数码管显示,同时以间隔200ms的频率点亮一个led灯。

参考技术A 这个是单片机里面利用定时器进行中断,然后通过中断程序操作的,你说的第一个num++,这个你是不是放在中断程序中执行的?有可能是你的定时器设置的数值比较小,你可以改动下看看, 参考技术B 可以测试一下,num不要定义为static 或者全局变量即定义为临时变量然后定义时初始化为0,然后把这个值打印出来。如果这个值一致增加,即表示程序一直在函数里执行num++,而没有执行下面的语句,个人觉得这个是不可能的,不符合逻辑的。如果值从0 到1 ,然后又从头开始,说明函数是从外部不停调用,即timer中断。试试吧本回答被提问者采纳 参考技术C 你好,觉得你代码应该没问题。我也不清楚你的问题,只能猜猜看。
涉及到几个间隔比较短的timer()。
猜一下,你应该有两个计时器,其中一个是50ms*4做闪烁的,一个是50ms*20做1S计时的。
仿真是单步执行的吧。出问题的timer (比如说T0)似乎在你模拟暂停时还在产生中断请求。
参考技术D 是51的 单片机么?
如果是中断设置错误,导致一次中断还没退出,下一次中断又进来,看上去就是你现在的样子

有对OTT架设 很了解的吗?很想自己经营网络电视

网友问题:有对OTT架设 很了解的吗?很想自己经营网络电视。

应该是卫星信号然后转数字信号通过网络传输吧。传输这块估计常用P2P技术来实现。卫星电视不是太懂,国内开锅是违法的。就不研究了。也不是主要的瓶颈。

我想实现一些功能如下:1.专门做日本频道(市面的iptv最多也就40-50个台。不全),从免费到收费,大大小小200多个台,我很想做全。2.尽可能从4K<FHD<HD进行覆盖。3.节目单预告及回滚。方便回放查询。4.免去采集卡,实时转录。可编辑(cutting),可预约,可实现自动去除CM进行录制,有一些带字幕的可以自动转成ASS格式。最好是做成软件包的,很讨厌捆绑式销售。

 

主要有两点:1.政策问题,IPTV被封杀是不是时间的问题?还有封杀有可能性吗?难道封网?2.版权问题,IPTV实质就是转录,收费台肯定不用说了,侵权了,免费台呢?我倒是想健康发展。等有一定体量后,尝试拿下收费台的代理权。有兴趣做这行的,请留下爪印。很想捣鼓一下这玩意。资金储备还算充裕。我什么都不懂,主要求技术实现。

回答:

做网络电视直播应用,必须要有七家牌照商的授权,不然不合法的。 不过刨除是否合法的问题,对于自有原创的直播源的网络电视观看,我可以说下技术的实现方案。 

如何搭建800Li OTT-TV/IPTV的运营管理后台,点击这里进行查看

演示APK: 

技术分享

以上是关于有对C语言熟悉的吗?我对if语句有点小小的疑问,请您解答。。的主要内容,如果未能解决你的问题,请参考以下文章

C语言学生管理系统中有点疑问

为什么编程语言中没有“return if”语句?

有对OTT架设 很了解的吗?很想自己经营网络电视

c语言中如何实现输入一个整数实现倒序输出

c语言中if语句条件为赋值语句

C语言。。。if语句