C程序求教
U8 k;U16 A={L1,L2,L3};
U16 B={S1,S2,S3};
U8 sign;
for(k=0x01;k<0x10;k++)
{
if(A==1)//如果数组A中有一个值等于1 就发送第一组数据 ,反之 sign=1 ,发送第二组数据
{
发送第一组数据
}
else
{
sign=1;
}
}
if(sign==1)
{
发送第二组数据
}
else
{
;
}
问题:这个程序可以实现“如果数组A中有一个值等于1 就发送第一组数据,反之,发送第二组数据”,但问题是数组A中有几个1就会发送几次数据,我想法是 无论A中有几个1,都发送最前面那个1的信息及数据,其他等于1的信息不再处理。 break;{:lol:} 本帖最后由 luweixuan 于 2012-9-21 23:53 编辑
U8 k;
U16 A={L1,L2,L3};
U16 B={S1,S2,S3};
U8 sign;
sign = 0;
for(k=0x01;k<0x10;k)
{
if(A==1)
sign=1;//编辑前为手误sign = 0;
}
if(sign==1)
{
;//发送第一组数据
}
else
{
;//发送第二组数据
}
sign = 0 luweixuan 发表于 2012-9-21 15:36 static/image/common/back.gif
U8 k;
U16 A={L1,L2,L3};
U16 B={S1,S2,S3};
sign 一直为0呀!~不行呀 U8 k;
U16 A={L1,L2,L3};
U16 B={S1,S2,S3};
U8 sign;
for(k=0x01;k<0x10;k++)
{
if(A==1)//如果数组A中有一个值等于1 就发送第一组数据 ,反之 sign=1 ,发送第二组数据
{
发送第一组数据
break;
}
else
{
sign=1;
}
}
if(sign==1)
{
发送第二组数据
}
else
{
;
} luweixuan 发表于 2012-9-21 15:36 static/image/common/back.gif
U8 k;
U16 A={L1,L2,L3};
U16 B={S1,S2,S3};
谢谢 不过有点问题 loongsuns 发表于 2012-9-21 15:51 static/image/common/back.gif
break;
谢谢
强大 leafstamen 发表于 2012-9-21 15:59 static/image/common/back.gif
U8 k;
U16 A={L1,L2,L3};
U16 B={ ...
谢谢 强大啊
我回复的晚,最佳答案应该是loongsuns。
提示一下,break好用,但是别太上瘾,看准了break的是for,不是break的if,曾经有同事写代码莫名其妙跑飞,最后查出来main里面的if加了break,把main给break出去了。 U8 k;
U16 A={L1,L2,L3};
U16 B={S1,S2,S3};
//U8 sign; //完全不用另设标志位
for(k=0x01;k<0x10;k++)
{
if(A==1) break;
}
if(k==10)
{
发送数组2
}
else
{
发送数组1
}
leafstamen 发表于 2012-9-21 16:07 static/image/common/back.gif
我回复的晚,最佳答案应该是loongsuns。
提示一下,break好用,但是别太上瘾,看准了break的是for,不是bre ...
追问啊:
break跳出的是for循环
第一次运行还可以
但是现在运行两组组数据会同时发出 bootgames 发表于 2012-9-21 16:31 static/image/common/back.gif
追问啊:
break跳出的是for循环
第一次运行还可以
如果第一组数据不满足条件,那就是必然的了,因为你的 if(sign==1)在for循环之外,还有定义的A,循环却是1~16,内存溢出会导致乱往外发数据的。 本帖最后由 bootgames 于 2012-9-21 17:05 编辑
leafstamen 发表于 2012-9-21 16:52 static/image/common/back.gif
如果第一组数据不满足条件,那就是必然的了,因为你的 if(sign==1)在for循环之外,还有定义的A,循环 ...
不是
我数组里已经改为15个值了
循环15次
程序有个漏洞
如果数组里第一个数值=0 那么第一个if不会执行 直接就进else了 sign就=1了 所以第二组数据也跟着发送了我是想让它全部为0的时候才执行 sign=1 bootgames 发表于 2012-9-21 17:02 static/image/common/back.gif
不是
我数组里已经改为15个值了
循环15次
if((sign==1)&&(15==k))
到底是15还是16,你自己设定数值,循环到k=16最起码得定义A。 leafstamen 发表于 2012-9-21 17:14 static/image/common/back.gif
if((sign==1)&&(15==k))
到底是15还是16,你自己设定数值,循环到k=16最起码得定义A。 ...
嘎嘎
果然强大
OK 调试通过~
多谢相助! 本帖最后由 luweixuan 于 2012-9-21 23:49 编辑
孩子莫悲伤 发表于 2012-9-21 15:48 static/image/common/back.gif
sign 一直为0呀!~不行呀
手误,把for里的sign=0改为sign=1就可。效率再高点,在其后面加break;记得要加{}
页:
[1]