草庐IT

true_divide

全部标签

c++ - "warning C4800: ' int' : forcing value to bool 'true' or 'false' "不同场景下的不同行为

我无法理解此警告的以下行为。case1:boolread=(33&3);//NoWarningissuedbyvs2013case2:intb=33;boolread=(b&3);//NowcompilerisgeneratingC4800warning.为什么编译器在情况2中生成警告,而在情况1中不发出任何警告。 最佳答案 C4800是一个性能警告-在运行时将整数强制转换为bool会产生成本。这与逻辑正确性无关。最常见的强制转换(和警告)发生在您与使用整数(VC++中的BOOL)作为bool值的代码交互时。第一个代码段中的编译时强

c++ - 在 OnNotify 中,返回 TRUE 或设置 *pResult = TRUE 有什么区别

给定一个通知处理程序BOOLCMyWindow::OnNotify(WPARAMwParam,LPARAMlParam,LRESULT*pResult){.......如果我处理一个特定的通知。我应该返回TRUE还是设置*pResult=TRUE?这是困扰我多年的问题。 最佳答案 它们是完全不同的东西:返回值,BOOL表示您是否处理了消息。如果你处理它非零,否则为零。这决定是否调用DefWindowProc。pResult用于将与此特定通知相关的信息发送回调用方。该信息的具体内容取决于正在处理的通知,如通过lParam传递的NMHD

c++ - 当 regex_search 返回 true 时,零是否始终匹配 "matches"?

以下是C++11标准中的一些引用:28.11.3regex_search[re.alg.search]m是regex_search的参数,类型为match_results。2Effects:Determineswhetherthereissomesub-sequencewithin[first,last)thatmatchestheregularexpressione.Theparameterflagsisusedtocontrolhowtheexpressionismatchedagainstthecharactersequence.Returnstrueifsuchasequence

c++ - LogonUser 为错误的密码返回 true

boolbRet=LogonUser(strUserName,L"",strPassword,LOGON32_LOGON_TYPE_NEW_CREDENTIALS,LOGON32_PROVIDER_WINNT50,&phToken)即使我在没有域的情况下输入错误的密码,bRet也总是返回true。是否有任何解决方法,比如如果我输入有效密码,当没有域时,它会为错误的密码返回true和false。 最佳答案 我假设您所说的LOGON32_LOGON_TYPE_NEW_CREDENTIALS实际上是指LOGON32_LOGON_NEW_C

c++ - 仅当将值与 TRUE 进行比较时才会警告操作中 xxx 和 bool 的不安全混合

我有一个用C(C89兼容)实现的库。它定义了一个bool数据类型bool32。它还定义了bool文字TRUE和FALSE:#ifndefTRUE#defineTRUE(0==0)#endif#ifndefFALSE#defineFALSE(0!=0)#endiftypedefuint32_tbool32;像下面这样的C代码编译时没有警告:bool32h=TRUE;if(h==TRUE){}if(h==FALSE){}cpp中的相同代码编译时出现以下警告:1>[filename/line):warningC4805:'==':unsafemixoftype'bool32'andtype'

c++ - "True Polymorphism"的例子? (最好使用 Haskell)

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我见过很多“真正的多态性”的部分定义,例如here和here但我在任何地方都找不到两个具体示例的区别的明显示例。我知道重载+运算符是某种形式的多态性,它在Haskell和C++中的实现方式不同。有人可以准确地说明两种语言的例子有什么不同吗?

c++ - string.find() 在使用 ==-1 时返回 true,而在使用 <0 时返回 false

我试图在字符串中查找字符,但得到了意想不到的结果。我的理解是string::find(charc)找不到时返回-1。但是,我得到了一些意想不到的结果。即使字符串不包含'8',它仍然返回true。std::strings="123456799";if(s.find('8')但是,当使用==时,代码会按预期工作。std::strings="123456799";if(s.find('8')==-1)cout 最佳答案 Myunderstandingisthatstring::find(charc)returns-1whenitisnot

c# - while(true)/while(1) 与 for(;;)

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:for(;;)orwhile(true)-WhichistheCorrectC#InfiniteLoop?Whychoosingfor(;;){}overwhile(1)?while(true)、while(1)和for(;;)之间有什么区别?它们在C#和C/C++等语言中都是无限循环。但是一个比另一个更好吗?有什么想法吗?

c++ - 将 defined(X) 返回为 true 或 false 的宏

我想要一系列宏来替换下面的代码#ifdefFOOreturntrue;#elsereturnfalse;#endif用类似的东西returnMAGICLY_EXPANDING_IFDEFINED_MACRO(FOO);您可以猜到,有很多FOO,足以将4行缩减为1行会很酷。但实际上它会用一行替换一个怪物switch语句。 最佳答案 在C++中,defined的行为仅针对条件包含(#if和#elif)指定。所以你不能以任何其他方式使用它。(相关规则见标准16.1节)但是,如果你想检测具体是#define到空字符串的宏,你不需要defin

parser.add_argument:错误:未识别的参数:true

我在Python2.7中有一个程序,该程序具有一系列代码:parser.add_argument('--skip_train',default=False,help='skiptraining',action='store_true')该代码告诉程序默认情况下进行培训。但是现在我想在没有培训的情况下实施它,因为培训已经完成。因此,我输入了提示:pythonmyprogame.py--skip_trainTrue但这给出了一个错误消息:error:unrecognizedarguments:True应该在提示命令中输入什么以实现该程序?看答案当您使用时action='store_true',您不