草庐IT

vec_bool

全部标签

c++ - 为什么当 bool = true 时补码运算符不起作用?

我已经编写了这个C++程序,但我无法理解为什么它在第三个cout语句中打印1。#includeusingnamespacestd;intmain(){boolb=false;cout输出:011为什么不打印以下内容?010 最佳答案 这是由于C遗留的运算符机械化(还记得~是bitwise补码)。~的整数操作数在执行操作之前被提升为int,然后转换回bool。所以你得到的是(使用无符号32位表示)false->0->0xFFFFFFFF->true。然后true->1->0xFFFFFFFE->1->true。您正在寻找!运算符来反转

c++ - 为什么 std::weak_ptr<> 不提供 bool 转换?

C++11的std::shared_ptr提供了一种bool运算符。operatorunspecified-bool-type()const;(由于bool类型的dangersfromimplicitcasting,它不是一个直接的operatorbool()const。)为什么std::weak_ptr没有类似的运算符?我发现自己经常打字if(!wp.expired())当我想打字时if(wp)为什么weak_ptr没有bool转换? 最佳答案 if(!wp.expired())在多线程代码中几乎总是错误检查,因为直接在if语句之

c++ - 为什么 std::weak_ptr<> 不提供 bool 转换?

C++11的std::shared_ptr提供了一种bool运算符。operatorunspecified-bool-type()const;(由于bool类型的dangersfromimplicitcasting,它不是一个直接的operatorbool()const。)为什么std::weak_ptr没有类似的运算符?我发现自己经常打字if(!wp.expired())当我想打字时if(wp)为什么weak_ptr没有bool转换? 最佳答案 if(!wp.expired())在多线程代码中几乎总是错误检查,因为直接在if语句之

c++ - 警告 C4800 : 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)

当我在VisualStudio2008中编译以下代码片段时,我收到了这个警告。BOOLCPlan::getStandardPlan()const{returnm_standardPlan;}boolm_bStandardPlan;if(plan!=NULL){//AssignthevaluestotheColaobjectpoCola->m_lPlanId=plan->getPlanId();poCola->m_lPlanElementId=plan->getPlanElementId();poCola->m_lPlanElementBaseId=plan->getPlanElemen

c++ - 警告 C4800 : 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)

当我在VisualStudio2008中编译以下代码片段时,我收到了这个警告。BOOLCPlan::getStandardPlan()const{returnm_standardPlan;}boolm_bStandardPlan;if(plan!=NULL){//AssignthevaluestotheColaobjectpoCola->m_lPlanId=plan->getPlanId();poCola->m_lPlanElementId=plan->getPlanElementId();poCola->m_lPlanElementBaseId=plan->getPlanElemen

c++ - bool vs void* 对同一个对象进行强制转换

下面的代码在if语句中使用时会打印“operatorbool”,而在函数调用需要bool时会打印“operatorvoid*”。为什么不使用operatorbool进行函数调用呢?以及如何让它在这两种情况下都使用它?#includeclassA{public:explicitoperatorbool()const{std::cout 最佳答案 在if语句中,会考虑隐式和显式转换运算符。因为A有一个operatorbool,它会选择那个,因为它比将A转换为void*然后将其转换为bool.但在其他不是条件的语句(if、while、..

c++ - bool vs void* 对同一个对象进行强制转换

下面的代码在if语句中使用时会打印“operatorbool”,而在函数调用需要bool时会打印“operatorvoid*”。为什么不使用operatorbool进行函数调用呢?以及如何让它在这两种情况下都使用它?#includeclassA{public:explicitoperatorbool()const{std::cout 最佳答案 在if语句中,会考虑隐式和显式转换运算符。因为A有一个operatorbool,它会选择那个,因为它比将A转换为void*然后将其转换为bool.但在其他不是条件的语句(if、while、..

c++ - 我应该返回 bool 还是 const bool?

哪个更好:boolMyClass::someQuery()const;constboolMyClass::someQuery()const;我一直在使用“constbool”,因为我确定我记得听到它是“int的作用”(例如比较运算符),但我无法在任何地方找到证据,主要是因为它很难对Google和Intellisense没有任何帮助;)有人可以确认吗?对我来说,返回const值(这不仅仅是关于bool值)更有意义;它将防止临时变量被修改,这几乎总是程序员的错误。我只是想要一些东西来支持它,这样我就可以向我的同事赞美返回const值:) 最佳答案

c++ - 我应该返回 bool 还是 const bool?

哪个更好:boolMyClass::someQuery()const;constboolMyClass::someQuery()const;我一直在使用“constbool”,因为我确定我记得听到它是“int的作用”(例如比较运算符),但我无法在任何地方找到证据,主要是因为它很难对Google和Intellisense没有任何帮助;)有人可以确认吗?对我来说,返回const值(这不仅仅是关于bool值)更有意义;它将防止临时变量被修改,这几乎总是程序员的错误。我只是想要一些东西来支持它,这样我就可以向我的同事赞美返回const值:) 最佳答案

c++ - 如何最好地将 VARIANT_BOOL 转换为 C++ bool?

使用COM时,boolean值将作为VARIANT_BOOL传递,在wtypes.h中声明为short。true和false也有预定义的值:#defineVARIANT_TRUE((VARIANT_BOOL)-1)#defineVARIANT_FALSE((VARIANT_BOOL)0)从VARIANT_BOOL转换为C++bool类型的最佳方法是什么?明显的变体是:与VARIANT_FALSE比较只需转换为bool可以很容易地发明其他方法。最好的方法是什么-最易读、最符合标准、最不容易出现意外错误植入以及最不容易移植到64位平台时出现问题? 最佳答案