草庐IT

c++ - 将 nullptr 转换为 bool

在C++11之前的日子里,编写以下内容被认为是更好的做法:if(ptr==NULL)而不是:if(!ptr)这有两个原因。它更有效,因为它不需要转换为bool。并且无法保证宏NULL确实会计算为bool值false。这在C++11中仍然适用吗?最好写吗if(ptr==nullptr)而不是if(!ptr)或者现在是二次罚款? 最佳答案 Itismoreefficientbecauseitdidn'tneedtocasttobool.我会在那儿打一个ol'[citation-needed]。我怀疑任何现代编译器都能做到这一点。if(p

c++ - 考试题。关于在法庭上如何处理 bool 值

我正在为即将到来的考试复习,并遇到了这个对我来说没有意义的过去的考试问题。考虑以下主要功能:intmain(){intx=0;cout程序执行时打印如下:x=0,(0准确解释发生了什么。这就是问题所在。据我所知,输出的最后一行应该是“x=10,(0 最佳答案 你期待什么0什么意思?它不检查是否x介于0之间和10,如果那是你的想法。是二元运算符,遵循运算符求值规则(优先级和结合性)。所以0实际上意味着(0.您需要进行两次检查才能获得所需的结果(留给您)。 关于c++-考试题。关于在法庭上如

c++ - Lambda 表达式在 if 语句中返回 bool

直截了当,我想在if()语句中使用lambda表达式返回true或false。我看到这个问题与我有类似的问题:LINK但我找不到答案。所以这是我的示例代码:if([&rel_pose](Eigen::VectorXdpose){return(sqrt(pose(0)*pose(0)+pose(1)*pose(1))当我尝试编译时出现此错误:error:couldnotconvert‘graphslam::GraphSLAM::main_pose_callback(constConstPtr&)::{rel_pose}’from‘graphslam::GraphSLAM::main_po

c++ - 如何将 bool 转换为 BOOL?

我通过这种构造将C++boolean值转换为WindowsAPIboolean值是否安全boolmybool=true;BOOLapiboolean=mybool?TRUE:FALSE;我认为这是肯定的,因为我没有看到任何明显的问题,但我想花点时间问一下,只是因为这可能比看起来更微妙。感谢Dima(温和地)指出我在最初提出问题时的粗心。 最佳答案 你是说boolb;...BOOLapiboolean=b?TRUE:FALSE;如果是这样,那么是的,这会起作用。 关于c++-如何将bool

c++ - 保留两个具有相反值的 bool 类成员

我计划有两个bool类成员(m_alive&m_dead),这样它们的值总是相反的。这可能看起来有些愚蠢(事实上,它可能只是愚蠢),但正如您在下面的代码中看到的那样,但我真正寻找的是有一种更清晰的方法来根据情况检查对象状态,并且它不必键入!m_alive或!m_dead会很有用。所以,是的,我真的不需要两个成员,但我想不出更简单的方法。我想到的第一个想法是创建一个函数,如果另一个状态也发生变化,它会改变其中一个状态,但我很确定需要有一种更简单、更容易和更快的方式来保持每个都有正确的值。AFAIK,用define做这件事是不可能的,因为它们的数量与我计划创建的不同对象一样多,而且看起来不

c++ - 为什么这个程序不输出 bool 值?

这个问题在这里已经有了答案:Theoutputofcout(1个回答)关闭4年前。#includeusingnamespacestd;intmain(){inta=8;cout为什么这个程序输出8而不是1(对于true)?

c++ - 使用 stringstream 输入/输出一个 bool 值

这似乎是一个愚蠢的问题,但我被难住了。这是我的代码:intmain(){stringline,command;getline(cin,line);stringstreamlineStream(line);boolactive;lineStream>>active;cout无论我为事件输入什么,它总是打印出0。所以假设我的输入是true它会输出0和同样的东西为false。 最佳答案 您应该始终验证您的输入是否成功:您会发现它不是。您想在当前设置下尝试值1:if(lineStream>>active){std::cout如果你想能够输入

c++ - for 循环中始终为 false 的 bool 条件是否得到优化?

我有以下情况booluser_set_flag;getFlagFromUser(&user_set_flag);while(1){if(user_set_flag){//dosomecomputationandoutput}//doothercomputation}变量user_set_flag只设置一次,而且在代码中只设置一次,在一开始,本质上是用户选择他想对程序做什么。假设用户选择了user_set_flag=false那么编译器将以这样的方式编译代码使得if(user_set_flag)语句将只被检查一次,或者它会总是被检查。我可以给编译器提示,比如将bool设置为const吗?

c++ - 从 Nvidia PTX 访问 bool (C++11) 数组的可移植方法

我需要对boolean数组进行GPU计算bool[](注意,不是std::vector)它是在CPU内存中创建的(使用C++11代码),然后通过cuMemCpy复制到GPU或类似的。第一个问题:sizeof(bool)报告1个字节。这是C++11标准保证的吗?第二个问题:是true(false)始终表示为1(0)(在unsignedchar表示中)还是编译器在这里有自由?(如果需要,它可以使用任何小于256的非零整数)第三个问题(特定于PTX):在PTX逻辑运算中or,xor等仅对大于8位的类型进行操作。那就是我可以对unsignedint进行逻辑运算与or.u32,,.但是自从C++

c++ - 我可以在导出到 c 的 c++ 函数中使用 `bool` 类型或不透明指针指向类吗?

我正在为我正在编写的库开发API。库本身将用c++编写,但API将使用extern"C"导出以获得最佳的跨语言兼容性(稍后我将使用此API来自C#、C++,也许是C和其他一些)。显然,API不能包含整个类或其他c++特定功能(如抛出异常),但我的问题是:我可以在导出的API中使用bool类型吗?毕竟,这是一个POD。我可以使用不透明的类指针吗?如果是这样,我将如何在头文件中声明它们,以便可以从C代码中使用头文件? 最佳答案 Bool应该没问题,ABI和语言设计者对这些事情很小心(例如,C++中的complex和C中的complexd