小编Luc*_*ano的帖子

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++成员数组的默认初始化?

这是一个简单的问题,但我似乎无法找到明确的答案.

如果我们有以下课程:

class Test
{
...
  char testArray[10];

...
}; 
Run Code Online (Sandbox Code Playgroud)

当我们创建一个Test实例时,testArray [1]的默认值是什么?

如果它是一个本地数组,它将是未初始化的.
如果它是一个静态数组,它将被初始化为0.

当数组是类成员时它会怎么做?

c++

20
推荐指数
2
解决办法
2万
查看次数

比较生成的可执行文件以获得等效性

我需要比较使用相同编译器/标志编译的2个可执行文件和/或共享对象,并验证它们没有更改.我们在受监管的环境中工作,因此对于测试目的而言,确切地隔离可执行文件的哪些部分已经发生变化非常有用.

由于包含有关文件信息的标头,因此使用MD5Sums/Hashes不起作用.

有没有人知道一个程序或方法来验证2个文件是否在执行上是相同的,即使它们是在不同的时间构建的?

comparison executable shared-objects binary-reproducibility

8
推荐指数
2
解决办法
5348
查看次数

在Clearcase视图中查找比特定日期更新的文件?

我必须上传我更改的文件以进行代码审查,但我有以下问题:

我需要查看自上次代码审核上传以来我视图中已更改的所有文件.当我上次审核上传时,我以为我标记了所有文件,但似乎我没有.

如何在当前视图中找到日期比我上次上传日期更新的所有clearcase元素?自上次上传以来,已经有很多签到.

clearcase

5
推荐指数
2
解决办法
1万
查看次数

"CruiseControl"自动化C++项目?

我们有一个目前使用Make on Linux构建的C++项目.我希望自动化它类似于CruiseControl下的Java项目.

1)是否有类似于CruiseControl for C++项目的项目?

要么

2)使用CruiseControl进行C++项目是否有一个很好的"操作方法"?

c++ continuous-integration automation cruisecontrol hudson

4
推荐指数
1
解决办法
6015
查看次数

比较在C++中的效率?(abs(X)> 1 vs abs(x)!= 0)

我知道 - 过早优化.
但是我有代码可以找出一个位置是否与缓存位置相比发生了变化.

目前的代码是:

if(abs(newpos-oldpos) > 1){
    .....
}
Run Code Online (Sandbox Code Playgroud)

使用以下内容更有效吗?

if(abs(newpos-oldpos) != 0){
    ....
}
Run Code Online (Sandbox Code Playgroud)

为什么或者为什么不?我目前正在讨论我的头脑,它更具可读性,并且想知道是否存在性能上的差异.

c++ optimization comparison performance

4
推荐指数
2
解决办法
2053
查看次数

使用Make的文件功能

我正在尝试将make变量的值转储到文件中以供进一步处理.

到目前为止,我已经能够使用以下规则将值打印到命令行:

print-%:
    @echo '$*=$($*)'
Run Code Online (Sandbox Code Playgroud)

您使用命令行调用的

make print-VAR
Run Code Online (Sandbox Code Playgroud)

我真的不想在stdout上,但打印到文件.GNU Make"文件"功能看起来像我应该使用的东西:http: //www.gnu.org/software/make/manual/html_node/File-Function.html#File-Function

该页面立即跳转到一个复杂的例子中,所以我已经实现了以下但似乎无法使它工作:它将@echo打印到stdout,但当我查看我的目录时没有output.txt文件.

printf-%:
    @echo '$*=$($*)'
    $(file > output.txt,$($*))
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

编辑:好吧,看起来我可以使用

@echo '$($*)' > output.txt
Run Code Online (Sandbox Code Playgroud)

做我想做的事,但这仍然无法解释为什么我的文件调用不起作用.

makefile gnu-make

4
推荐指数
1
解决办法
2569
查看次数