...
case Qt::Key_A: {
/* Сравнение можно опустить до if (_myTexpr.substrate) */
if (true == _myTexpr.substrate) {
setSubstrate(false);
} else {
setSubstrate(true);
}
} break;
...
无关:
将常量与变量进行比较,这样您就可以避免在调用赋值运算符而不是比较时有时会遇到的问题:
case Qt::Key_A: {
/** Случайно не поставили второе равно
* Ошибки во время компиляции не будет
* Такой код приводит к неопределенному поведению
**/
if (_myTexpr.substrate = true) {
setSubstrate(true);
} else {
setSubstrate(false);
}
} break;
如果表达式的左侧是编译时常量,则以下代码将永远不会编译:
case Qt::Key_A: {
if (true = _myTexpr.substrate) {
setSubstrate(true);
} else {
setSubstrate(false);
}
} break;
虽然有作者的回答,但我还是会通过一元否定提供一种更优雅的方式:
你有几个选择:
无关:
将常量与变量进行比较,这样您就可以避免在调用赋值运算符而不是比较时有时会遇到的问题:
如果表达式的左侧是编译时常量,则以下代码将永远不会编译:
PS我们不谈
re-define
。想通了
这就是它的工作原理