gpt4 book ai didi

c++ - 为什么这个按位运算是 "narrowing conversion from ' int' 到 'byte'“? - Arduino

转载 作者:行者123 更新时间:2023-12-02 10:04:15 24 4
gpt4 key购买 nike

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

byte getID(){
return (byte)EEPROM.read(0x0199);
}

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

byte out[3] = {getID()|B10000000, B00000001, B00000001};
Serial.write(out,3);

它返回一个“从‘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};

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

最佳答案

所以我想我已经找到了答案,感谢一些评论者。

按位或运算似乎返回一个 int,无论原始操作数是什么。如果我随后获取该返回值并将其转换为 byte,则它不再给出错误:

byte out[3] = {(byte)((getID())|B10000000), B00000001, B00000001};

这是我没有尝试过的事情,感谢各种评论者引导我了解这一点。

关于c++ - 为什么这个按位运算是 "narrowing conversion from ' int' 到 'byte'“? - Arduino,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61021982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com