gpt4 book ai didi

c - XC8 中的不匹配比较

转载 作者:行者123 更新时间:2023-11-30 14:35:54 25 4
gpt4 key购买 nike

当定义 EUSART_BUFFER_SIZE 与 uint8_t 类型的变量 eusart_rx_buffer_rd 进行比较时,比较不匹配。但如果变量的类型更改为 uint16_t,警告就会消失。为什么?

#define EUSART_BUFFER_SIZE 256
uint8_t eusart_rx_buffer_rd = 0;

if (eusart_rx_buffer_rd >= EUSART_BUFFER_SIZE)
{
eusart_rx_buffer_rd = 0;
}

最佳答案

文字常量 256 的隐式类型是 int,因此您将 intuint8_t 进行比较。

比较本身会导致隐式提升为 int,但在任何情况下始终为 false,因为 256 无法由 uint8_t 表示。

尚不清楚合适的解决方案是什么,但如果 uint8_t 变量的所有值都有效,则测试没有任何意义,并且对更大类型的简单更改实际上可能会引入允许分配无效值的错误。

关于c - XC8 中的不匹配比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58286689/

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