找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4791|回复: 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]是什么意思啊
还请详解
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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])
首先 是位于 判断条件中的判断语句  
   ...

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

回复

使用道具 举报

5#
ID:394056 发表于 2018-9-7 11:43 | 只看该作者
还有else if语句怎么用啊
回复

使用道具 举报

6#
ID:367840 发表于 2018-9-7 14:53 | 只看该作者
建议楼主多多实践,多试下不同的参数会有什么现象,就会理解的更深了
回复

使用道具 举报

7#
ID:395019 发表于 2018-9-7 15:32 | 只看该作者
再判断  &&   左右两边的  是否同时  为真  即可
回复

使用道具 举报

8#
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 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

9#
ID:395066 发表于 2018-9-7 16:23 | 只看该作者
在count等于8的情况下判断rbuf数组的前7个数异或是否等于下表为7的值

评分

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

查看全部评分

回复

使用道具 举报

10#
ID:395263 发表于 2018-9-8 10:20 | 只看该作者
这个应用应该是用于收到的数组进行异或校验,并准备回传数据

评分

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

查看全部评分

回复

使用道具 举报

11#
ID:318629 发表于 2018-9-8 10:56 | 只看该作者
楼主的主要问题是运算符问题,建议楼主学习一下二进制逻辑真值表

评分

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

查看全部评分

回复

使用道具 举报

12#
ID:318629 发表于 2018-9-8 10:57 | 只看该作者
楼主的主要问题是运算符问题,建议楼主学习一下二进制逻辑真值表

微信图片_20180908105447.jpg (873.46 KB, 下载次数: )

图片歪了尴尬

图片歪了尴尬

评分

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

查看全部评分

回复

使用道具 举报

13#
ID:395307 发表于 2018-9-8 12:05 | 只看该作者
^ 异或,两个bit相同出0,不同出1.

评分

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

查看全部评分

回复

使用道具 举报

14#
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 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

15#
ID:395355 发表于 2018-9-8 15:12 | 只看该作者
意思应该是收到6个数,且第6个数为检验码,为前5个数的异或结果。

评分

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

查看全部评分

回复

使用道具 举报

16#
ID:395367 发表于 2018-9-8 15:46 | 只看该作者
复杂问题分解成一个一个小问题,就很好解决了

评分

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

查看全部评分

回复

使用道具 举报

17#
ID:393712 发表于 2018-9-8 16:12 | 只看该作者
兄弟去图书馆借本c语言看看吧,希望能帮到你。呵呵

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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