草庐IT

format_number

全部标签

c++ - 查找魔数(Magic Number) C++

魔数(MagicNumber)一个正整数是“神奇的”,当且仅当,如果它是偶数,它可以通过重复除以2或乘以3然后加1来减少到1,如果它是奇数。因此,例如,3是神奇的,因为3首先减少到10(3*3+1),然后减少到5(10/2),然后减少到16(5*3+1),然后减少到8(16/2),然后是4(8/2),然后是2(4/2),最后是1(2/2)。魔数(MagicNumber)假说指出所有正整数都是魔数(MagicNumber),或者,正式地说:∀x∈Z,MAGIC(x)其中MAGIC(x)是谓词“xismagic”。我们应该开发一个C++程序来找到从1到50亿的“魔数(MagicNumber

c++ - gdb 错误不是可执行格式 : File format not recognized

我正在尝试在Ubuntu16.04上调试一个简单的“helloworld”C++程序,但gdb无法识别可执行文件格式。但是,我能够在命令行上成功运行可执行文件。这是代码#includeusingnamespacestd;intmain(){cout我使用命令编译程序文件TestProject.cppg++-gTestProject.cpp-ohello然后要调试,我给出命令gdb./hello我收到以下错误信息GNUgdb(Ubuntu7.11.1-0ubuntu1~16.5)7.11.1Copyright(C)2016FreeSoftwareFoundation,Inc.Licens

C++ 范围-v3 库 : 'take' -ing first 3 perfect numbers works and halts; 'take' -ing first 4 doesn't stop after 4

据我了解,range-v3库的View操作(目前需要C++17,但要成为C++20中STL的正式部分)提供了可链接的类STL算法,这些算法是延迟计算的。作为实验,我创建了以下代码来评估前4个完全数:#include#includeusingnamespacestd;intmain(intargc,char*argv[]){autoperfects=ranges::view::ints(1)|ranges::view::filter([](intx){intpsum=0;for(inty=1;y代码以可能无限范围的数字开始(ranges::view::ints(1)),但是因为View算

c++ - C/C++ : Inherent ambiguity of "\xNNN" format in literal strings

考虑这两个字符串:wchar_t*x=L"xy\x588xla";wchar_t*y=L"xy\x588bla";阅读本文后,您会认为两个字符串文字除了一个字符外是相同的-'x'而不是'b'。事实证明并非如此。第一个字符串编译为:y={'x','y',0x588,'x','l','a'}第二个实际上是:x={'x','y',0x588b,'l','a'}它们的长度甚至都不一样!是的,'b'被十六进制表示('\xNNN')字符吃掉了。至少,这可能会导致手写字符串的困惑和细微的错误(您可能会争辩说unicode字符串不属于代码主体)但更严重的问题,也是我面临的问题,是自动生成的代码。似乎没

c++ - 在此 "number of elements"宏中添加虚拟字符的目的是什么?

VisualC++10附带stdlib.h,其中包含此gem:templatechar(*__countof_helper(UNALIGNED_CountofType(&_Array)[_SizeOfArray]))[_SizeOfArray];#define_countof(_Array)(sizeof(*__countof_helper(_Array))+0)它使用aclevertemplatetricktodeducearraysize并防止将指针传递到__countof。宏定义中+0的作用是什么?它解决了什么问题? 最佳答案

c++ - 带有可变模板参数的 boost::format

假设我有一个类似printf的函数(用于日志记录)利用完美转发:templatevoidawesome_printf(std::stringconst&fmt,Arguments&&...args){boost::formatf(fmt);f%/*Howtospecify`args`here?*/;BlackBoxLogFunction(boost::str(f).c_str());}(我没有编译这个但我的实际功能遵循这个指南)如何将可变参数“展开”到boost::format变量f中? 最佳答案 只是总结void.pointer'

c++ - 使用 clang-format - 将空括号保持在同一行

我正在尝试配置clang-format,这样大括号通常会在它们自己的行上开始:voidfunc(){if(...){printf("TaDa\n");}}但我希望它在大括号为空时保持在一行中。(主要用于ctors):Bar::Bar(intval):_val(val){}目前它看起来像这样:Bar::Bar(intval):_val(val){}有什么想法吗?(经过编辑以使情况更清楚) 最佳答案 更新:万岁!现在可以使用Clang5.0或更高版本的自定义BreakBeforeBraces。请参阅documentation中的Spli

c++ - 有没有办法配置 clang-format 以将嵌套的命名空间声明保持在同一行?

在我工作的代码库中,我们总是这样声明嵌套的命名空间:namespacefoo{namespacedetail{//stuff}}//foo::detailnamespace我还没有找到一种方法来配置clang-formatnot将其分成多行:namespacefoo{namespacedetail{//stuff}}//foo::detailnamespace我试过BreakBeforeBraces配置,我研究了clang3.8中新的BraceWrapping配置,但都没有成功。是否可以在不使用//clang-format[on/off]注释代码的情况下执行此操作?

c++ - 重新发明轮子 : Random Number Generator

所以我是C++的新手,正在尝试学习一些东西。因此,我正在尝试制作一个随机数生成器(如果您愿意,可以使用RNG或PRNG)。我对RNG有基本的了解,比如你必须从种子开始,然后通过算法发送种子。我坚持的是人们如何提出上述算法。这是我必须获得种子的代码。intgetSeed(){time_trandSeed;randSeed=time(NULL);returnrandSeed;}现在我知道在C++中有预构建的RNG,但我希望学习的不仅仅是复制其他人的工作并尝试弄清楚。因此,如果有人能引导我到可以阅读的地方或向我展示如何为此提出算法的示例,我将不胜感激。 最佳答案

c++ - 为 std::put_time 调试断言 "Invalid format directive"

我正在学习使用C++11chrono,并尝试输出时间。OtherSOquestions显示一些代码示例,例如std::chrono::time_pointnow=std::chrono::system_clock::now();std::time_tnow_c=std::chrono::system_clock::to_time_t(now-std::chrono::hours(24));std::cout当我在VS2012上调试运行它时,我得到一个调试断言,声称我使用了“无效的格式指令”。如果我使用std::strftime,也会发生同样的情况。我假设Microsoft不支持%F和%