找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4242|回复: 16
收起左侧

请教C语言程序if_else if知识

  [复制链接]
ID:394056 发表于 2018-9-5 14:58 | 显示全部楼层 |阅读模式
一个C语言问题请教大家

else if(count==6&&rbuf[5]==(rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4]))   
    {
    count=0 ;
    uart1_flag=rbuf[3];
     ES=0;   
    }
  else if(count==7&&(rbuf[6]==(rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4]^rbuf[5])))
    {

    count=0  ;
    uart1_flag=rbuf[3];
    ES=0;
    }
  else if(count==8&&(rbuf[7]==(rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4]^rbuf[5]^rbuf[6])))  
    {
    count=0  ;
    uart1_flag=rbuf[3];
    ES=0;
    }
这里边的count==6&&rbuf[5]==(rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4]是什么意思啊
还请详解
回复

使用道具 举报

ID:390775 发表于 2018-9-5 17:29 | 显示全部楼层
count==6&&rbuf[5]==(rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4])
首先 是位于 判断条件中的判断语句  
  count == 6  //是判断  count  是不是等于  6  如果等于  整个语句为真(非0)
  &&  //逻辑   与    只有当  左右条件都为真是  才输出真
  rbuf[5]   ==  (rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4])  //其中 ^是按位异或:用于位运算,每个位相同为0,不同为1
比如:7和4

它们的2进制值为:111,和100;它们异或后就是11  所以   rbuf[5]   ==  (rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4])  // 是判断 rbuf[5]  是否与   rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4]  异或 结果相等
  若  相等  为真  否则为假  
  然后 再判断  &&   左右两边的  是否同时  为真  即可
   希望能帮到你

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:277550 发表于 2018-9-5 17:51 | 显示全部楼层
这知识,已经不是if else的范围,而是运算符号的问题了

位运算符:

包括:1。&位与符 2。|位或符 3。^位异或符 4。~位取反符
~~~~~~~~~~~~~~~~~~~~~~~~~

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:394056 发表于 2018-9-7 10:14 | 显示全部楼层
zhaoyinlo 发表于 2018-9-5 17:29
count==6&&rbuf[5]==(rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4])
首先 是位于 判断条件中的判断语句  
   ...

谢谢你的讲解,瞬间明白了

回复

使用道具 举报

ID:394056 发表于 2018-9-7 11:43 | 显示全部楼层
还有else if语句怎么用啊
回复

使用道具 举报

ID:367840 发表于 2018-9-7 14:53 | 显示全部楼层
建议楼主多多实践,多试下不同的参数会有什么现象,就会理解的更深了
回复

使用道具 举报

ID:395019 发表于 2018-9-7 15:32 | 显示全部楼层
再判断  &&   左右两边的  是否同时  为真  即可
回复

使用道具 举报

ID:370231 发表于 2018-9-7 15:46 | 显示全部楼层
先理解一下这个,然后再看你的
if(条件)
如果条件为真,执行这里;(条件为真才执行)
else
否则,执行这里。(只要不是真,就执行。)
-----------------------------
if(条件1)
如果条件1为真,执行这里;(条件为真才执行)
else if(条件2)
否则,当条件2为真执行这里。(当条件1不为真,条件2为真执行这里)
else
条件1,条件2都不为真,执行这里

在说白一点:
if(今天是星期三)
  今天要上班
else
今天不用上班
上面的情况,只有星期三要上班。其他的星期一,二,四,五,六,日。都不用上班。

if(今天是星期六)
今天不用上班
else if(今天是星期天)
今天不用上班
else
都用上班
第一个,先判断,是不是星期六,如果是,就不用上班,
如果今天不是星期六,继续用else if判断今天是不是星期天,如果是,也不用上班。
如果今天不是星期六,也不是星期天,那么,就会执行最后一个ELSE,
都要上班

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:395066 发表于 2018-9-7 16:23 | 显示全部楼层
在count等于8的情况下判断rbuf数组的前7个数异或是否等于下表为7的值

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:395263 发表于 2018-9-8 10:20 | 显示全部楼层
这个应用应该是用于收到的数组进行异或校验,并准备回传数据

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:318629 发表于 2018-9-8 10:56 | 显示全部楼层
楼主的主要问题是运算符问题,建议楼主学习一下二进制逻辑真值表

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:318629 发表于 2018-9-8 10:57 | 显示全部楼层
楼主的主要问题是运算符问题,建议楼主学习一下二进制逻辑真值表

图片歪了尴尬

图片歪了尴尬

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:395307 发表于 2018-9-8 12:05 | 显示全部楼层
^ 异或,两个bit相同出0,不同出1.

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:395324 发表于 2018-9-8 13:08 | 显示全部楼层
V count==6&&rbuf[5]==(rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4]) 首先 是位于 判断条件中的判断语句     count == 6  //是判断  count  是不是等于  6  如果等于  整个语句为真(非0)   &&  //逻辑   与    只有当  左右条件都为真是  才输出真   rbuf[5]   ==  (rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4])  //其中 ^是按位异或:用于位运算,每个位相同为0,不同为1 比如:7和4  它们的2进制值为:111,和100;它们异或后就是11  所以   rbuf[5]   ==  (rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4])  // 是判断 rbuf[5]  是否与   rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4]  异或 结果相等   若  相等  为真  否则为假     然后 再判断  &&   左右两边的  是否同时  为真  即可    希望能帮到你

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:395355 发表于 2018-9-8 15:12 | 显示全部楼层
意思应该是收到6个数,且第6个数为检验码,为前5个数的异或结果。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:395367 发表于 2018-9-8 15:46 | 显示全部楼层
复杂问题分解成一个一个小问题,就很好解决了

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:393712 发表于 2018-9-8 16:12 | 显示全部楼层
兄弟去图书馆借本c语言看看吧,希望能帮到你。呵呵

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表