草庐IT

c++ - 有什么区别 - const int x = 5000;和 const int x = 50'00;在 C++ 中?

下面的c++代码有什么区别-constintx=5000;constintx=50'00; 最佳答案 50'00使用digitseparator这是在C++14中添加的。该数字将解析为5000,唯一的区别是它可能更易于阅读。通常您会使用数字分隔符来分隔千位,例如1'000'000,但您可以在数字中的任何位置使用它。 关于c++-有什么区别-constintx=5000;和constintx=50'00;在C++中?,我们在StackOverflow上找到一个类似的问题:

c++ - int x = 'fooo' 是编译器扩展吗?

我见过并使用过如下C++代码:intmyFourcc='ABCD';它在最新版本的GCC中工作,不确定最近的版本。这个功能在标准中吗?它叫什么?我在网上搜索时遇到了问题...编辑:我也找到了这个信息,供以后的观察者引用:来自gccdocumentationThecompilervaluesamulti-charactercharacterconstantacharacteratatime,shiftingthepreviousvalueleftbythenumberofbitspertargetcharacter,andthenor-inginthebit-patternofthene

c++ - 将字符串转换为 int

我有一个大文件,其中每一行都包含以空格分隔的整数。任务是逐行稀疏这个文件。对于字符串到int的转换,我有三种解决方案:staticintstringToIntV1(conststring&str){return(atoi(str.c_str()));}但是,如果我传递格式错误的字符串,它不会产生任何错误。例如字符串“123error”被转换为123。第二种方案:staticintstringToIntV2(conststring&str){intresult;istringstreammyStream(str);if(myStream>>result){returnresult;}//

c++ - 在 C++ 中将 int 转换为字节数组

我正在尝试使用AndrewGrant在回答这个问题时建议的LSB查找方法:Positionofleastsignificantbitthatisset但是,它会导致段错误。这是一个演示问题的小程序:#includetypedefunsignedcharByte;intmain(){intvalue=300;Byte*byteArray=(Byte*)value;if(byteArray[0]>0){std::cout我做错了什么?我读过在C++中使用“C风格”转换不是好的做法。我应该使用reinterpret_cast(value)吗?反而?不过,这仍然会导致段错误。

C++程序返回int类型,为什么return -1返回255呢?

这个问题在这里已经有了答案:Returnvaluerangeofthemainfunction(7个答案)关闭7年前。请注意,我运行的是linux机器,尽管我认为在windows(或其他)机器上的结果没有什么不同。这是一个简单的问题-C++程序通常返回32位int。如果我返回-1,然后从终端打印结果,结果是255。这是为什么?我觉得链接这是我应该知道的,或者很多年前就应该注意到的-我以前从未真正使用过返回码,也从未想过它。测试C++程序:intmain(){return-1;}编译:g++main.cpp-oa.out运行:./a.out检查结果:echo$?结果:255我本以为会看到

c++ - 从 std::size_t* 到 long unsigned int* 的无效转换

在raspberrypi-arv7l上,我正在编译以下C++程序#includevoidfun(unsignedlongint*i){std::cout对于上面的代码,我收到以下错误:a.cpp:Infunction'intmain()':a.cpp:12:9:error:invalidconversionfrom'std::size_t*{akaunsignedint*}'to'longunsignedint*'[-fpermissive]fun(&i);^~a.cpp:3:6:note:initializingargument1of'voidfun(longunsignedint*

c++ - 无法将 int 转换为 int *

#include"stdio.h"#include"conio.h"voidswap(int*x,int*y);voidmain(){inta=10,b=20;swap(a,b);printf("valueofa=%dandb=%d");getch();}voidswap(int*x,int*y){if(x!=y){*x^=*y;*y^=*x;*x^=*y;}}//我得到..无法将int转换为int*...谁能告诉我为什么会这样。以及如何解决问候。希望得到快速和积极的回应。 最佳答案 您对swap()的调用应包含&符号:swap(&

C++ 如何将数组 int[10] push_back 到 std::vector<int[10]>?

#includeusingnamespacestd;vectorv;ints[60];v.push_back(s);此代码在VisualStudio2015社区中报告编译错误:错误(事件)没有重载函数实例“std::vector::push_back[with_Ty=int[60],_Alloc=std::allocator]”匹配参数列表错误C2664“voidstd::vector>::push_back(constint(&)[60])”:无法将参数1从“int”转换为“int(&&)[60]” 最佳答案 改为使用std::a

c++ - int main(int argc, char *argv[])

如果我有这个:intmain(intargc,char*argv[])在正文中,您有时可以找到使用argv[1]的程序。我们什么时候使用argv[1]而不是argv[0]?是否仅当我们只想读取命令行中的第二个参数时? 最佳答案 按照惯例,argv[0]是当前程序的名称(或路径),argv[1]到argv[argc-1]是用户提供的命令行参数。但是,这并不必须是真实的——程序可以使用特定于操作系统的功能来绕过这一要求,而且这种情况经常发生,您应该意识到这一点。(不过,我不确定即使您意识到这一点,您是否可以做很多事情...)例子:gcc

c++ - int i = i ^ i 的值;它总是零或未定义的行为吗?

在下面的程序中,输出总是为零,还是未定义的行为?#includeintmain(){inti=i^i;std::cout用gcc4.8.0编译成功,输出0。 最佳答案 inti=i^i;由于i是一个自动变量(即它在automatic存储期限内声明),它未(静态)初始化但您正在读取它的值以(动态地)初始化它。因此,您的代码会调用未定义的行为。如果您在命名空间级别声明i或声明为static,那么您的代码就没问题了:命名空间级别inti=i^i;//declaredatnamespacelevel(staticstorageduratio