C语言,if,或运算与运算取值问题

  1. 条件语句if(DO) , C语言,if 内不是要判断的吗? DO输入数据没有判断条件,怎么往下执行?

  2. 为什么temp 要进行或运算否则与运算存储后在左移循环8次成为一个字节呢?

    for(i=0;i<8;i++)

      {
          DI=1;
          if(DO)    //DO从高位DATA7输出到DATA0,共8位.
          {
              temp=(temp|0x01);    //与1或运算
          }
          else
          {
              temp=(temp&0xfe);     //与0与运算
          }
          clk=0;
          _nop_();
          clk=1;
          temp=temp<<1;  
      }
      adval=temp;
    

DO如果是个数值,那么它为0,就表示条件为false,否则为true
或上0x01,是为了将temp的最低位设置为1
左移一位,相当于temp乘以2

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^