相关疑难解决方法(0)

C++中是否存在非短路逻辑"和"?

tl; dr:C++中是否存在非短路逻辑AND(类似于&&)?

我有两个我想调用的函数,并使用返回值来计算第三个复合函数的返回值.问题是我总是希望评估两个函数(因为它们输出有关系统状态的日志信息)

IE:

bool Func1(int x, int y){
  if( x > y){
    cout << "ERROR- X > Y" << endl;
  }
}
bool Func2(int z, int q){
  if( q * 3 < z){
    cout << "ERROR- Q < Z/3" << endl;
  }
}
bool Func3(int x, int y, int z, int q){
  return ( Func1(x, y) && Func2(z, q) );
}
Run Code Online (Sandbox Code Playgroud)

当然,条件语句是不是在功能那么简单,是的,我知道我可以使用临时变量来存储的两个函数的返回,接着做临时变量"短路"的逻辑,但我想知道是否有一个"优雅"的语言解决方案来保持Func3中的单行返回,同时仍然从两个函数获取日志消息.


答复摘要:

"按位"运算符| 和&可用于获得效果,但仅当返回类型为bool时.我在ANSI C++规范中没有提到这一点.从我可以告诉,这个工程因为"布尔"被转换为int(真= 1,假= 0),然后将位运算符时,则转换回一个布尔值.

也可以使用运算符" +"和" *".这在ANSI C++规范中没有提到,但可能因为与上述相同的原因而起作用." +"给"或"因为true被转换为1,然后除了0之外的任何东西都被转换回true." *"适用于"和"因为1(真)*0(假)== 0(假)和1(真)*1(真)== …

c++ operators logical-operators

30
推荐指数
3
解决办法
6340
查看次数

标签 统计

c++ ×1

logical-operators ×1

operators ×1