草庐IT

c++ - 随机 bool 值

已结束。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。此问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭2年前。Improvethisquestion我正在尝试在C++中生成一个0或1的随机int。现在,每次运行此代码时我都会收到0,但我不知道为什么。这里有什么问题?#include#includesrand(time(0));intrandomval=rand()%2;cout 最佳答案 这

c++ - 在列表初始化中缩小转换为 bool - 奇怪的行为

考虑这段C++11代码:#includestructX{X(boolarg){std::cout在x的初始化中,有一个从double到bool的缩小转换。根据我对标准的理解,这是格式错误的代码,我们应该看到一些诊断。VisualC++2013报错:errorC2398:Element'1':conversionfrom'double'to'bool'requiresanarrowingconversion但是,Clang3.5.0和GCC4.9.1都使用以下选项-Wall-Wextra-std=c++11-pedantic编译此代码时没有错误和警告。运行程序会输出一个1(这并不奇怪)。

c++ - 为什么指向 int 的指针转换为 void* 而指向函数的指针转换为 bool?

C++草案标准(N3337)有以下关于指针转换的内容:4.10Pointerconversions2Anrvalueoftype“pointertocvT,”whereTisanobjecttype,canbeconvertedtoanrvalueoftype“pointertocvvoid.”Theresultofconvertinga“pointertocvT”toa“pointertocvvoid”pointstothestartofthestoragelocationwheretheobjectoftypeTresides,asiftheobjectisamostderived

c++ - 在 GCC 中避免或警告从 const char* 到 bool 的隐式转换

考虑以下代码:voidfoo(boolparameter){std::cout我希望编译器在将constchar*而不是bool作为参数传递给函数foo时发出警告。但GCC会隐式转换它。我尝试了-Wall、-Wextra和-Wpedantic,但这些都没有发出警告。有没有可以捕捉到这种隐式转换(无效参数类型)的标志?忽略函数具有bool类型的参数这一事实,有些人可能会认为这是不好的代码风格。我无法重构那部分。标准只是提到了这样一个implicitconversion会发生:Aprvalueofintegral,floating-point,unscopedenumeration,poi

C++ bool 返回 0 1 而不是 true false

我重载了equals(包括==和!=),它检查两个对象是否相等,然后返回一个boolean值。不幸的是,它打印的是0或1。我知道它是正确的,但为了便于阅读,我无法弄清楚如何让它打印true或false。我什至尝试过:if(a.equals(b)){returntrue;}returnfalse;但是,C++很顽固,输出0或1。任何帮助将不胜感激。编辑-打印完成:cout想要的输出是a==bistrue 最佳答案 您可以使用std::boolalpha:Setstheboolalphaformatflagforthestrstream

c++ - 在 C/C++ 中将 int 转换为 bool

我知道在C和C++中,将boolean值转换为整数时,(int)true==1和(int)false==0。我想知道是否要反方向转换......在下面的代码中,以下所有断言在使用VisualStudio2013和KeilµVision5编译的.c文件中对我来说都是正确的。注意(bool)2==true。C和C++标准对将非零、非一整数转换为boolean值有何规定?是否指定了此行为?请包括引文。#include#includevoidTestBoolCast(void){inti0=0,i1=1,i2=2;assert((bool)i0==false);assert((bool)i1=

c++ - GCC 错误 : cannot convert 'const shared_ptr<...>' to 'bool' in return

我正在切换到GCC4.6.1,它开始提示在GCC4.4和MSVC10上运行良好的代码。从这样的函数返回时,它似乎不想在shared_ptr和bool之间进行转换:classClass{shared_ptrpointer_;};boolClass::Function()const{returnpointer_;}使用returnstatic_cast(pointer_);一切正常。到底他妈发生了什么?这是--std=cpp0x. 最佳答案 在C++11中,shared_ptr有一个explicitoperatorbool这意味着sha

c++ - 用于线程控制的 volatile bool 是否被认为是错误的?

根据我对thisquestion的回答,我开始阅读关键字volatile以及关于它的共识。我看到有很多关于它的信息,一些旧的现在看起来是错误的,还有很多新的说它在多线程编程中几乎没有位置。因此,我想澄清一个具体的用法(在SO上找不到确切的答案)。我还想指出,我确实了解编写多线程代码的一般要求以及为什么volatile不能解决问题。不过,我在我工作的代码库中看到使用volatile进行线程控制的代码。此外,这是我使用volatile关键字的唯一情况,因为所有其他共享资源都是正确的同步。假设我们有这样一个类:classSomeWorker{public:SomeWorker():isRun

c++ - int、char、float、bool,哪个最小?

以下内容来自“在家填写”编程测试,该测试是英国大学游戏开发理学硕士申请流程的一部分:C++BasicsIfaprogramdeclaredfourvariables,oneoftypeint,oneoftypefloat,oneoftypechar,andoneoftypebool,whichvariablewouldoccupytheleastspaceinmemory?intcharfloatbool根据说明,只有一个真实的陈述。但是,我的C++书(C++PocketReference,O'Reilly)指出:“bool的典型大小是一个字节”和“char的大小是一个字节。字节的大小

c++ - (bool)(i & 1) 和 i % 2 == 1 相同吗?

(bool)(i&1)和i%2==1总是相同的,其中i是int?注意:我所说的始终是指所有平台(即使一个字节是16位)以及所有C和C++标准。编辑:对于存在bool的所有C和C++标准。 最佳答案 没有。int的1s的补码表示,-1的表示为1...10,所以它们不同。无论如何,i%2可以是负数的负数i(确实需要在C99中当它不为0时),因此对于负数不等于1奇数。 关于c++-(bool)(i&1)和i%2==1相同吗?,我们在StackOverflow上找到一个类似的问题: