草庐IT

行为不当

全部标签

c++ - 执行时溢出/下溢是未定义的行为吗?

我正在阅读有关未定义行为的信息,我不确定它是否只是编译时的特性,或者它是否可以在执行时发生。我很理解这个例子(这是从UndefinedBehaviorpageofWikipedia中提取的):AnexamplefortheClanguage:intfoo(unsignedx){intvalue=5;value+=x;if(valueThevalueofxcannotbenegativeand,giventhatsignedintegeroverflowisundefinedbehaviorinC,thecompilercanassumethatatthelineoftheifcheck

c++ - DeferWindowPos 奇怪的行为

所有ActiveX控件都会出现这种情况。如果我使用DeferWindowPos重新定位ActiveX控件HDWPhdwp=BeginDeferWindowPos(1);DeferWindowPos(hdwp,m_pActiveX->GetSafeHwnd(),NULL,left,top,width,height,SWP_NOZORDER);EndDeferWindowPos(hdwp);它去那里但一旦您点击控件内的任何地方,它就会移动/调整到它的旧矩形。如果我改用MoveWindowm_pActiveX->MoveWindow(left,top,width,height);这不会发生。

c++ - 超出范围的模板参数的预期行为?

templatevoidfoo(void){}templatevoidfoo();templatevoidbar(void){}templatevoidbar();GCC实例化foo和bar;Clang以“错误:非类型模板参数的计算结果为2,无法将其缩小为类型‘bool’[-Wc++11-narrowing]”拒绝两者。上面的代码有效吗?这是其中之一的错误吗?使用的版本:Clang3.8.0-2ubuntu4,GCC5.4.020160609(Ubuntu5.4.0-6ubuntu1~16.04.2) 最佳答案 这是gcc错误578

AI:123-基于机器学习的行人行为分析与异常检测

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~🎉🎊🎉你的技术旅程将在这里启航!从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。✨✨✨每一个案例都附带有在本地跑过的关键代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新中~一.基于机器学习的行人行为分析与异常检测人工智能(AI)在各个领域都展现出强大的潜力,其中之一是在城市智能监控系统中应用机器学习技术进行行人行为分析与异常检测。通过深度学习和计算机视觉的结合,我们能够更精准地理解和预测行人的行为,从而提高城市安全性。本文将深入探讨这一方向,并提供相应的代码实例。引言

c++ - g++-8 和早期版本之间的奇怪行为

最近,在将我们的应用程序从gcc-5.3移植到8.2时,我们注意到一个奇怪的行为破坏了我们的应用程序。简而言之,gcc-8.2似乎删除了我们的“比较2个无符号整数的if分支”之一,甚至没有发出警告。我们用相同的编译选项尝试了g++5.3、g++7.4和g++8.2,只有g++8.2有这个问题。下面将展示一个简短的例子。#include#include#include#includeusingnamespacestd;structmyunion{myunion(uint32_tx){_data.u32=x;}uint16_thi()const{return_data.u16[1];}ui

C++ 类设计为每个不同的行为提供多个接口(interface)

这是我的第一篇文章,所以请善待。这是我最近得到的一个面试问题,但我在搜索(google、C++FAQ等)后找不到答案。有一个行为b1()的接口(interface)I1。有3个类A,B,C。所有这些类都通过覆盖b1()来实现接口(interface)I1。有第四个类D,它具有在接口(interface)I1中定义的行为(b1)和一个额外的行为b2问题是你如何设计D类。我的答案是创建另一个接口(interface)I2,它定义行为b2()并通过覆盖b1()和b2()使类D实现I1和I2(C++中的多重继承)面试官同意这个解决方案,但问如果将来出现具有新行为的新类(class),我们将如何

c++ - 未命名对象的 RVO(返回值优化)是否是普遍保证的行为?

Thisquestion在不同方面(也仅限于gcc)。我的问题仅适用于未命名对象。ReturnValueOptimization被允许改变结果程序的可观察行为。标准中似乎也提到了这一点。但是,这个“允许”术语令人困惑。这是否意味着RVO保证在每个编译器上发生。由于RVO下面的代码改变了它的可观察行为:#includeintglobal=0;structA{A(int*p){}A(constA&obj){++global;}};Afoo(){returnA(0);}//这个程序是否应该为所有实现打印global=0,而不考虑编译器优化和foo的方法大小? 最佳

c++ - 如果表达式的中间结果溢出,是否是未定义行为?

这个问题是另一个SOquestion的结果.示例代码#includeintmain(){unsignedlongb=35000000;inti=100;intj=30000000;unsignedlongn=(i*j)/b;//#1unsignedlongm=(100*30000000)/b;//#2std::cout输出8585使用g++-std=c++11-Wall-pedantic-O0-Wextra编译此代码会给出以下警告:9:28:警告:表达式[-Woverflow]中的整数溢出问题我认为#1和#2调用未定义行为是否正确,因为中间结果100*30000000没有适合int?还

c++ - 对象数组的默认复制行为

如果我有一个以数组作为成员的类:classA{Objectarray[SIZE];};然后我复制它的一个实例:Aa;Ab=a;Ac;c=a;array是逐字节memcpy还是Object::operator=逐元素复制? 最佳答案 C++中的数组对于所有一等对象都表现良好,包括用户定义的类型(无论它们是否是POD/非平凡可构造的)。#includestructObject{Object(){puts("Object");}Object(Objectconst&){puts("copy");}~Object(){puts("~Obje

c++ - std::string s() 奇怪的行为

这个问题在这里已经有了答案:Whyistherenocalltotheconstructor?[duplicate](3个答案)关闭9年前。我发现了一些我不明白的奇怪东西。std::stringa();打印出来时返回1。我不知道它是从哪里来的。我认为a()是一个没有参数的构造函数,但看起来它不是。我在哪里可以找到这方面的信息?这是什么?当尝试执行std::stringb(a);时,编译器会提示:error:nomatchingfunctionforcallto‘std::basic_string::basic_string(std::string(&)())’解释将不胜感激。