草庐IT

vec_bool

全部标签

c++ - 当函数返回类型为 bool 时,为什么不能在 C++14 中返回共享指针?

我正在使用g++并编写一个简单的函数:#includestd::shared_ptrptr;boolfails_compiling(){returnptr;}从我在界面中看到的内容来看,shared_ptr实现包括一个bool运算符,我什至可以像这样应用快速修复:returnstatic_cast(ptr);现在可以编译了。为什么返回算法不像if()和while()那样尝试自动转换为bool? 最佳答案 如果你结账std::shared_ptr的bool转换运算符,您会看到它被声明为:explicitoperatorbool()co

c++ - 错别字:Linux 下 std::ifstream 中 bool 到 int 转换引起的错误

我有一个拼写错误(||而不是|)并注意到这样的代码在GCC中失败并在Visual中编译。我知道std::ifstream的第二个参数是一个int。所以理论上,bool必须隐式转换为int。那么为什么会失败呢?引发错误的示例(我只是使用了一些整数而不是标志)。#includeintmain(intargc,char*argv[]){std::ifstream("foo",2|3||4)} 最佳答案 std::ifstream'sconstructor将std::ios_base::openmode作为第二个参数这是typedef根据实

c++ - 将 `nullptr` 分配给 `bool` 类型。哪个编译器是正确的?

我有以下代码片段,将nullptr分配给bool类型。#includeintmain(){boolb=nullptr;std::cout在clang3.8.0中工作正常。它给出了输出0。ClangDemo但是g++5.4.0报错:source_file.cpp:Infunction‘intmain()’:source_file.cpp:5:18:error:convertingto‘bool’from‘std::nullptr_t’requiresdirect-initialization[-fpermissive]boolb=nullptr;哪个编译器是正确的?

c++ - 对于多个 bool 运算,使用 && 是否比 || 更有效?

假设我们要计算(A||B||C)的bool值这在逻辑上等于!(!A&&!B&&!C)。使用!(!A&&!B&&!C)会不会比另一个if(!A)为false因为整个表达式值变为false更省时?程序会注意到吗?或者程序在返回最终结果之前还需要计算(!B)和(!C)的值?附言只需更正de'Morgan表达式并将~更改为!。谢谢大家。P.S.2显示在thislink中通过RetiredNinja和optimizedversion通过DavidFoerster.汇编代码其实是一样的! 最佳答案 (A||B||C)在逻辑上等于!(!A&&!B

.net通过S7.net读写西门子PLC中,字符串,bool,整数,小数及byte型

注:.net中通过TCP/IP方式通过S7.net.dll动态库,连接到西门子PLC,西门子程序中许勾选优化块,程序读取需要db块号+偏移量一。使用VS项目,在项目中添加S7.net动态库代码中引用S7.net动态库usingS7.Net;实例化PLC服务名//////实例化PLC///PlcS71500;连接PLC按钮时间编写:以上代码可测试是否能连接至PLC二.西门子中点位信息,在程序中地址表示说明在DB块中有如下变量//////实例化PLC///PlcS71500;//////连接PLC/////////privatevoidbutton1_Click(objectsender,Even

c++ - 当只有一个线程写入 c++ 中的 bool 变量时,是否可能出现竞争条件?

在下面的代码示例中,程序执行永远不会结束。它创建一个线程,该线程在终止之前等待全局bool设置为true。只有一位作者和一位读者。我相信允许循环继续运行的唯一情况是bool变量为false。bool变量怎么可能以与只有一个作者不一致的状态结束?#include#include#includebooldone=false;void*threadfunc1(void*){std::cout 最佳答案 从某种意义上说,threadfunc1()中的这条语句存在问题:while(!done);可以由编译器实现为:a_register=don

c++ - GCC:禁止隐式 bool->int 转换

是否有任何gcc标志禁止隐式“bool->int”转换?我想通过这段代码得到任何警告:voidfunction(intvalue,boolflag){}intmain(){inta=123;boolflag=true;//oops,acommonmistakefunction(flag,a);} 最佳答案 作为解决方法,在C++11中,您可以删除其他可能的重载:templatevoidfunction(int,T)=delete; 关于c++-GCC:禁止隐式bool->int转换,我们

c++ - GLSL bool 值的大小是多少

我想使用一个bool类型的着色器变量,但我找不到它的大小。这很重要,因为在设置顶点属性指针时,我指定了可以是的数据类型GL_BYTE,GL_UNSIGNED_BYTE,GL_SHORT,GL_UNSIGNED_SHORT,GL_INT,GL_UNSIGNED_INT,GL_FLOAT,orGL_DOUBLE在C++中,通常bool应该与4字节int具有相同的大小,但我可以假设GLSL也是如此还是它只有1个字节? 最佳答案 ThismattersbecausewhensettingupvertexattributepointerIsp

c++ - 为什么 `bool b = 2` 工作正常但 `bool b = {2}` 会产生缩小转换的警告?

使用C++11中的{}初始化程序初始化boolb={2}会产生以下警告消息:warning:narrowingconversionof‘2’from‘int’to‘bool’inside{}[-Wnarrowing]但是,使用老式的boolb=2没有这个问题。这背后的原因是什么?更新:我使用g++-std=c++11编译代码,它给了我警告。如果我添加选项-pedantic-errors,则警告变为错误。 最佳答案 缩小初始化列表中的数据类型会使您的C++11程序格式错误,在这种情况下,编译器可以发出警告或继续运行。有趣的是,您实际上

c++ - bool类型的变量是如何存储在内存中的? (C++)

boolean测试;sizeof(test)=1如果使用VS2010。由于每个C++数据类型都必须是可寻址的,“测试”boolean变量是8位(1字节)。我的问题是“test”变量真的占用内存中的1个字节吗?有没有什么实现技巧可以让bool数据类型只占一点?如果是,你能举个例子吗?booltest1[32](在VS2010中),inttest2(在VS2010中)test1和test2是否占用相同的内存? 最佳答案 test1的每个元素必须是可寻址的。这意味着数组test1(使用booltest1[32]创建的)至少需要32个字节(