Visual C++ 这里的正确语法是什么
visual c++ what is the correct syntax here?
检查变量值,然后在相同条件下设置变量并检查新设置变量的正确语法是什么?
所以基本上是这样的
if(this->somevar > 0 && this->newvar = this->GetNewVar(this->somevar),this->newvar > 0)
我知道这不是正确的语法,或者至少它对我不起作用,因此主题,我以此为例,所以如果this->somevar
为 null 或 0,我不希望它执行下一个条件&& this->newvar = this->GetNewVar(this->somevar,this->newvar
而是跳过语句并忽略该部分。
这样的事情的正确语法是什么?
&&
是具有短路计算的运算符,如果左侧为真,则不执行右侧部分。但是你为什么不简单地写:
if(this->somevar > 0)
{
this->newvar = this->GetNewVar(this->somevar);
if (this->newvar > 0)
{
...
这肯定会让事情更清楚...
如果this->somevar
计算结果为零,逻辑 AND &&
运算符会短路,这意味着在这种情况下不会计算 if 表达式的其余部分
号后面的表达式不是必需的。此外,还缺少一件事,作业周围有括号:
if(this->somevar > 0 && (this->newvar = this->GetNewVar(this->somevar)) > 0)
如果没有括号,您最终可能会this->newvar
设置为布尔表达式的值 this->GetNewVar(this->somevar),this->newvar > 0
,这将被计算为布尔结果(true/false,当转换为this->newvar
类型时,可以根据编译器的不同将其转换为 0 或 1 或 -1)。
我认为只有逗号后面的位才被计算为 if 条件。逗号左侧的表达式将被忽略。
int main() {
if( false, true) { cout << " got to if( false, true ) "; }
if ( true, false ) { cout << "got to if( true, false ) "; }
}
要回答您的问题,您可以将任何内容放在逗号的左侧并执行任何您喜欢的操作,只要您要计算的表达式是列表中的最后一个表达式即可。
所以如果 ( exp1, exp2, exp3 , exp4 ) dowhatever(); 只有在 exp4 为 true 时才运行。为了提高可读性,您实际上应该在 if 条件之外运行 exp1 到 exp3。
- C++避免重复声明的语法是什么
- 使用基类指针调用基类的值构造函数的语法是什么?
- 这行/语法是什么意思?
- 初始化对象以在 C++08 中作为参数传递的首选语法是什么?
- 将引用绑定到指针的语法是什么?(各种)
- 这个typedef和转换运算符语法是什么意思
- 此语法是什么意思.(::*).
- 将显式指定的函数模板重载作为模板参数传递的正确语法是什么?
- 使用 pybind11 绑定 typedef 类型的正确语法是什么?
- 将此类传递给引用的正确语法是什么?
- 带有约束的可变参数模板的'requires'表达式的语法是什么?
- 在TensorFlow C++中用于feed_dict的语法是什么?
- 调用模板化类内的枚举类枚举器的正确语法是什么
- 返回没有 typedef 的成员函数指针的语法是什么?
- 将强制转换运算符重载到 std::map 的正确语法是什么
- 这种增量语法是什么意思
- 返回结构的方法的正确语法是什么
- C 中的(*)语法是什么意思
- 堆栈(int = 10),这个语法是什么意思(C++)
- variadic模板阵列参考参数的语法是什么?