我试图做一个更长的功能,但它的行为很奇怪。我曾试图找出问题所在,但我已经能够找到错误的部分。
该程序是为 Arduino 制作的,但这种现象可能出现在其他环境中。我试图进行大量搜索,但找不到解决方案。
所以,我的错误部分:
为什么这两个代码不给出相同的结果?
如何构造一个没有额外变量
但与“代码 1”相同的操作的单行函数?
结果:
- 代码1:0b00101100
- 代码2:0b01101100
源代码:
代码1:(正确操作但不是一行)
#include <binary.h>
const byte value=B00110110;
byte buffer,result;
void setup(){
Serial.begin(115200);
buffer = (value << 3);
result = (buffer >> 2);
Serial.println(result,BIN);
}
void loop(){
}
它给出:0b00101100
代码2:(操作不正确但一行)
#include <binary.h>
const byte value=B00110110;
byte result;
void setup(){
Serial.begin(115200);
result = ((value << 3) >> 2);
Serial.println(result,BIN);
}
void loop(){
}
它给出:0b01101100