【发布时间】:2017-08-04 04:18:01
【问题描述】:
我有三个LPCWSTR 字符串变量,分别称为A、B、C。
我从另一个函数分配它们,如果出现问题,有时会返回 nullptr。像这样:
A = MyFunc();
B = MyFunc();
C = MyFunc();
现在,对于一些带有这些变量的东西,我需要检查这些变量中是否只有一个不是nullptr(只分配了一个变量)。
我自己尝试这样做:
if ((A == nullptr) && (B == nullptr) && (C <> nullptr)) {}
欢迎任何关于如何做到这一点的想法。
【问题讨论】:
-
你不能链接
xor,然后否定结果吗?像!(A ^ B ^ C)这样的东西。^是按位的,但它可以工作吗?只是吐球。 -
我们可以假设你不在乎哪一个是空的,只要一个并且只有一个是空的?
-
除非你想被阅读你代码的其他程序员永远诅咒,否则我会避开像 XOR 这样的“聪明”解决方案 :-) 优化可读性首先!
-
C <> nullptr不是有效的 C++。你试图表达的可能是C != nullptr。 -
对于只有 3 个变量,最简单的解决方案确实是
(A && !B && !C) || (!A && B && !C) || (!A && !B && C)- 不要陷入抽象! (或!!A + !!B + !!C == 1)
标签: c++ variables null nullptr