草庐IT

c++ - 如何在多行上编写 QString?

你有更好的方法吗?QStringstr("Iamalonglonglong"+QString("longlonglong")+QString("longQString"));我不喜欢所有这些QString。 最佳答案 在C++中,字符串文字在彼此相邻放置时会自动连接。QStringstr("Iamalonglonglong""longlonglong""longQString"); 关于c++-如何在多行上编写QString?,我们在StackOverflow上找到一个类似的问题:

c++ - 如何在没有编译器警告的情况下进行可移植的 64 位算术

我偶尔会在我的开源C++库中使用64位算术。我发现longlong非常适合我的目的。甚至一些有10年历史的solaris盒子也可以编译它。而且它也可以在Windows上使用#defines,而不会乱七八糟。现在的问题是我收到了用户的提示,因为他们使用GCC-pedantic设置进行编译,而GCC坚持发出警告说longlong不是C++标准的一部分。这可能是对的,但我对C++标准本身并不太感兴趣,我只是希望我的代码能够在尽可能多的编译器上工作。所以我的问题是双重的:谁能说出不支持64位longlong的实际C++编译器?有没有办法让GCC编译64位算术(在32位平台上)而没有编译器警告?

c++ - 如何在没有编译器警告的情况下进行可移植的 64 位算术

我偶尔会在我的开源C++库中使用64位算术。我发现longlong非常适合我的目的。甚至一些有10年历史的solaris盒子也可以编译它。而且它也可以在Windows上使用#defines,而不会乱七八糟。现在的问题是我收到了用户的提示,因为他们使用GCC-pedantic设置进行编译,而GCC坚持发出警告说longlong不是C++标准的一部分。这可能是对的,但我对C++标准本身并不太感兴趣,我只是希望我的代码能够在尽可能多的编译器上工作。所以我的问题是双重的:谁能说出不支持64位longlong的实际C++编译器?有没有办法让GCC编译64位算术(在32位平台上)而没有编译器警告?

c++ - 整数常量对于 "long"类型来说太大了

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:longlonginC/C++为项目欧拉问题编写一个简单的程序。拒绝编译,因为“整数常量对于“long”类型来说太大了”,即使它应该在unsignedlonglong的大小限制内。使用dev-c++编译器。有问题的代码:#includeboolisprime(unsignedlonglongi){if(i==1||i==0)returnfalse;if(i==2)returntrue;for(unsignedlonglongk=2;k!=i-1;k++){if(i%k==0)returnfalse;}retu

c++ - 整数常量对于 "long"类型来说太大了

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:longlonginC/C++为项目欧拉问题编写一个简单的程序。拒绝编译,因为“整数常量对于“long”类型来说太大了”,即使它应该在unsignedlonglong的大小限制内。使用dev-c++编译器。有问题的代码:#includeboolisprime(unsignedlonglongi){if(i==1||i==0)returnfalse;if(i==2)returntrue;for(unsignedlonglongk=2;k!=i-1;k++){if(i%k==0)returnfalse;}retu

c++ - 在 C/C++ 中进行数学运算时,我应该对哪些变量进行类型转换?

例如,当我将两个整数相除并希望返回一个float时,我迷信地写了这样的东西:inta=2,b=3;floatc=(float)a/(float)b;如果我不将a和b转换为float,它将进行整数除法并返回一个int。同样,如果我想将一个有符号的8位数字与一个无符号的8位数字相乘,我会在相乘之前将它们转换为有符号的16位数字,以免溢出:u8a=255;s8b=-127;s16=(s16)a*(s16)b;当根本不进行转换或仅转换其中一个变量时,编译器在这些情况下的行为究竟如何?我真的需要显式转换所有变量,还是只转换左边的变量,还是右边的变量? 最佳答案

c++ - 在 C/C++ 中进行数学运算时,我应该对哪些变量进行类型转换?

例如,当我将两个整数相除并希望返回一个float时,我迷信地写了这样的东西:inta=2,b=3;floatc=(float)a/(float)b;如果我不将a和b转换为float,它将进行整数除法并返回一个int。同样,如果我想将一个有符号的8位数字与一个无符号的8位数字相乘,我会在相乘之前将它们转换为有符号的16位数字,以免溢出:u8a=255;s8b=-127;s16=(s16)a*(s16)b;当根本不进行转换或仅转换其中一个变量时,编译器在这些情况下的行为究竟如何?我真的需要显式转换所有变量,还是只转换左边的变量,还是右边的变量? 最佳答案

c++ - 为什么 common_type<long, unsigned long>::type = long long?

common_type::type是unsignedlong因为关于积分提升后的操作数,标准说...[...]iftheoperandthathasunsignedintegertypehasrankgreaterthanorequaltotherankofthetypeoftheotheroperand,theoperandwithsignedintegertypeshallbeconvertedtothetypeoftheoperandwithunsignedintegertype不要称积分提升系统有问题,但似乎如果有更大的有符号整数类型可以表示有符号和无符号操作数的范围,则应该使

c++ - 为什么 common_type<long, unsigned long>::type = long long?

common_type::type是unsignedlong因为关于积分提升后的操作数,标准说...[...]iftheoperandthathasunsignedintegertypehasrankgreaterthanorequaltotherankofthetypeoftheotheroperand,theoperandwithsignedintegertypeshallbeconvertedtothetypeoftheoperandwithunsignedintegertype不要称积分提升系统有问题,但似乎如果有更大的有符号整数类型可以表示有符号和无符号操作数的范围,则应该使

c++ - 64 位 C++ 中的 sizeof(long)

我已经下载了MinGW-64,所以我现在可以使用g++4.7.0(实验性)为Windows7编译64位程序。但是下面一行:cout打印48,而不是88。g++4.6.0的文档说:The64-bitenvironmentsetsintto32bitsandlongandpointerto64bits有人知道为什么sizeof(long)不是8吗?已编辑添加:我感到困惑的原因是用于64位Windows的g++4.7.0(还)不是GNUCompilerCollection的官方部分。它是第一个具有32位long的64位版本,因此文档根本不适用于它。确实,如果您访问relevantwebpag