gpt4 book ai didi

c++ - 为什么重叠比较总是在以下情况下评估为真

转载 作者:行者123 更新时间:2023-11-28 01:28:41 25 4
gpt4 key购买 nike

我不明白为什么下面的代码有警告说重叠比较总是评估为真。永远不会执行下一条语句。

QVariant MainModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
if ((role != Qt::DisplayRole) || (role != Qt::EditRole)) // always evaluates to true warning, but why?
return QVariant();
if (index.column() == 0 && index.row() < m_values.count()) // this is never executed warning
return m_values.at( index.row() );
else
return QVariant();
}

最佳答案

假设 QT::DisplayRoleQT::EditRole 有不同的值(否则你为什么要比较两者?)那么让我们想想关于这个……

如果role 等于一个,则它必须不等于另一个。因此,这两个条件之一将为真。由于这是一个 OR,这意味着整个表达式将为真。

唯一不会发生这种情况的情况是 QT::DisplayRole == QT::EditRole。您是想使用 AND (&&) 而不是 OR 吗?

关于c++ - 为什么重叠比较总是在以下情况下评估为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52649877/

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