小编Cam*_*n K的帖子

为什么这个按位运算是“从'int'到'byte'的缩小转换”?- Arduino

getID()我有一个从 EEPROM 返回一个字节的函数:

byte getID(){
  return (byte)EEPROM.read(0x0199);
}
Run Code Online (Sandbox Code Playgroud)

后来,(第 65 行),我使用此函数并将其与二进制值进行按位或:

byte out[3] = {getID()|B10000000, B00000001, B00000001};
Serial.write(out,3);
Run Code Online (Sandbox Code Playgroud)

它返回从“int”到“byte”的“缩小转换”:

file.ino:65:33: warning: narrowing conversion of '(int)(((unsigned char)((int)getID())) | 128)' from 'int' to 'byte {aka unsigned char}' inside { } [-Wnarrowing]

     byte out[3] = {(getID())|B10000000, B00000001, B00000001};
Run Code Online (Sandbox Code Playgroud)

这只是一个警告,代码工作正常(我认为),但为什么这是一个缩小转换?我试过确保几乎所有东西都是一个字节......

c++ arduino arduino-uno

2
推荐指数
1
解决办法
740
查看次数

标签 统计

arduino ×1

arduino-uno ×1

c++ ×1