草庐IT

Operators

全部标签

c++ - C++ 中是否存在非短路逻辑 "and"?

tl;dr:C++中是否存在非短路逻辑与(类似于&&)?我有2个要调用的函数,并使用返回值来计算第三个复合函数的返回值。问题是我总是希望这两个函数都进行评估(因为它们输出有关系统状态的日志信息)IE:boolFunc1(intx,inty){if(x>y){coutY"当然,函数中的条件并不是那么简单,是的,我意识到我可以使用临时变量来存储两个函数的返回,然后在临时变量上执行“短路”逻辑变量,但我想知道是否有一种“优雅的”语言解决方案可以在Func3中保持单行返回,同时仍然从两个函数获取日志消息。回复摘要:“按位”运算符|和&可用于获得效果,但前提是返回类型为bool。我在ANSIC+

c++ - C++ 中是否存在非短路逻辑 "and"?

tl;dr:C++中是否存在非短路逻辑与(类似于&&)?我有2个要调用的函数,并使用返回值来计算第三个复合函数的返回值。问题是我总是希望这两个函数都进行评估(因为它们输出有关系统状态的日志信息)IE:boolFunc1(intx,inty){if(x>y){coutY"当然,函数中的条件并不是那么简单,是的,我意识到我可以使用临时变量来存储两个函数的返回,然后在临时变量上执行“短路”逻辑变量,但我想知道是否有一种“优雅的”语言解决方案可以在Func3中保持单行返回,同时仍然从两个函数获取日志消息。回复摘要:“按位”运算符|和&可用于获得效果,但前提是返回类型为bool。我在ANSIC+

c++ - '**' 在 C 中是什么意思?

一个对象开头有两个星号是什么意思?**variable 最佳答案 在声明中,它意味着它是一个指向指针的指针:int**x;//declarexasapointertoapointertoanint使用它时,它会尊重它两次:intx=1;int*y=&x;//declareyasapointertoxint**z=&y;//declarezasapointertoy**z=2;//setsthethingpointedto(thethingpointedtobyz)to2//i.e.,setsxto2

c++ - '**' 在 C 中是什么意思?

一个对象开头有两个星号是什么意思?**variable 最佳答案 在声明中,它意味着它是一个指向指针的指针:int**x;//declarexasapointertoapointertoanint使用它时,它会尊重它两次:intx=1;int*y=&x;//declareyasapointertoxint**z=&y;//declarezasapointertoy**z=2;//setsthethingpointedto(thethingpointedtobyz)to2//i.e.,setsxto2

c++ - +=、|=、&= 等是原子的吗?

这个问题在这里已经有了答案:Cannum++beatomicfor'intnum'?(13个回答)关闭2年前。+=、|=、&=等“修改”运算符是原子的吗?我知道++是原子的(如果你在两个不同的线程中“同时”执行x++;,你总是会得到x增加了2,与关闭优化的x=x+1相比。)我想知道variable|=constant等是否是线程安全的,还是我必须用互斥锁来保护它们?(……还是依赖于CPU?在这种情况下,它在ARM上如何?) 最佳答案 你错了。不能保证++是原子的,复合赋值运算符也不能保证,甚至任何C++操作也不能保证。

c++ - +=、|=、&= 等是原子的吗?

这个问题在这里已经有了答案:Cannum++beatomicfor'intnum'?(13个回答)关闭2年前。+=、|=、&=等“修改”运算符是原子的吗?我知道++是原子的(如果你在两个不同的线程中“同时”执行x++;,你总是会得到x增加了2,与关闭优化的x=x+1相比。)我想知道variable|=constant等是否是线程安全的,还是我必须用互斥锁来保护它们?(……还是依赖于CPU?在这种情况下,它在ARM上如何?) 最佳答案 你错了。不能保证++是原子的,复合赋值运算符也不能保证,甚至任何C++操作也不能保证。

C++ 官方运算符名称/关键字

祝大家节日快乐。我一直在研究C++预处理器序列(使用boost)来帮助我生成基于​​运算符的仿函数。到目前为止,我已经完成了源代码,但是我很难找到识别这些仿函数的最合适的关键字。更具体地说,在查看C++0x草案后,我没有为以下运算符找到最合适的(唯一)名称:->和.在草案中都称为:类成员运算符->*和.*都被称为:指向成员运算符的指针你认为你能帮我更好地命名它们吗?我使用的引用文献:C++0x草案(可在线找到)"boost/proto/operators.hpp"包含大多数可重载运算符的header。OperatorsinCandC++来自维基百科,它还提供了以下名称。结构引用->结构

C++ 官方运算符名称/关键字

祝大家节日快乐。我一直在研究C++预处理器序列(使用boost)来帮助我生成基于​​运算符的仿函数。到目前为止,我已经完成了源代码,但是我很难找到识别这些仿函数的最合适的关键字。更具体地说,在查看C++0x草案后,我没有为以下运算符找到最合适的(唯一)名称:->和.在草案中都称为:类成员运算符->*和.*都被称为:指向成员运算符的指针你认为你能帮我更好地命名它们吗?我使用的引用文献:C++0x草案(可在线找到)"boost/proto/operators.hpp"包含大多数可重载运算符的header。OperatorsinCandC++来自维基百科,它还提供了以下名称。结构引用->结构

c++ - C++中的默认赋值运算符=是浅拷贝?

只是一个简单的快速问题,我在其他任何地方都找不到可靠的答案。默认的operator=只是右侧所有类成员的浅表拷贝吗?Classfoo{public:inta,b,c;};foof1,f2;...f1=f2;将等同于:f1.a=f2.a;f1.b=f2.b;f1.c=f2.c;当我测试它时这似乎是正确的,但我需要确保我没有遗漏一些特定情况。 最佳答案 我会说,默认operator=是copy。它复制每个成员。除非被复制的成员是某种间接的,例如指针,否则不会出现浅拷贝和深拷贝之间的区别。就默认的operator=而言,“复制”的含义取决

c++ - C++中的默认赋值运算符=是浅拷贝?

只是一个简单的快速问题,我在其他任何地方都找不到可靠的答案。默认的operator=只是右侧所有类成员的浅表拷贝吗?Classfoo{public:inta,b,c;};foof1,f2;...f1=f2;将等同于:f1.a=f2.a;f1.b=f2.b;f1.c=f2.c;当我测试它时这似乎是正确的,但我需要确保我没有遗漏一些特定情况。 最佳答案 我会说,默认operator=是copy。它复制每个成员。除非被复制的成员是某种间接的,例如指针,否则不会出现浅拷贝和深拷贝之间的区别。就默认的operator=而言,“复制”的含义取决