草庐IT

T_Unsigned

全部标签

c++ - 将 unsigned char* 强制转换为 char* 并将取消引用的指针视为它真的指向 char 是否安全?

在标题为Warninggeneratedduewrongstrcmpparameterhandling的问题之后,关于标准对字符类型的值表示的实际保证似乎存在一些问题。问题这看起来不错,但标准是否保证(1)将始终产生true?charunsigned*p1=...;char*p2=reinterpret_cast(p1);*p1==*p2;//(1) 最佳答案 这可能会让您大吃一惊,但在C++11标准(N3337)和即将推出的C++14(N3797)中没有这样的保证。charunsigned*p1=...;char*p2=reint

c++ - 与 double 混合时使用 int 和 unsigned int 之间的速度差异

我有一个应用程序,其中内部循环的一部分基本上是:doublesum=0;for(inti=0;i!=N;++i,++data,++x)sum+=*data*x;如果x是一个unsignedint,那么代码所用的时间是int的3倍!这是一个更大的代码库的一部分,但我把它归结为要点:#include#include#include#includetypedefunsignedcharuint8;templatedoublemoments(constuint8*data,intN,Twrap){Tpos=0;doublesum=0.;for(inti=0;i!=N;++i,++data){s

c++ - 与 double 混合时使用 int 和 unsigned int 之间的速度差异

我有一个应用程序,其中内部循环的一部分基本上是:doublesum=0;for(inti=0;i!=N;++i,++data,++x)sum+=*data*x;如果x是一个unsignedint,那么代码所用的时间是int的3倍!这是一个更大的代码库的一部分,但我把它归结为要点:#include#include#include#includetypedefunsignedcharuint8;templatedoublemoments(constuint8*data,intN,Twrap){Tpos=0;doublesum=0.;for(inti=0;i!=N;++i,++data){s

c++ - 为什么要比较 Unsigned Int >= 0 a "Pointless Comparison"?

我收到警告:Pe186"Pointlesscomparisonofunsignedintwithzero"当我尝试编译以下代码时:for(clLoop=cpLoopStart;clLoop>=0;clLoop--){//Dosomething}我不明白为什么。我可以理解,如果我正在寻找一个小于零的值,因为unsignedint永远不会是负数。但我在这里寻找的只是它是否等于为零,unsignedint当然可以。如果在这个循环中我尝试预先递减而不是后递减,我什至可以看到这个错误,但事实并非如此。 最佳答案 您检查unsignedint是

c++ - 为什么要比较 Unsigned Int >= 0 a "Pointless Comparison"?

我收到警告:Pe186"Pointlesscomparisonofunsignedintwithzero"当我尝试编译以下代码时:for(clLoop=cpLoopStart;clLoop>=0;clLoop--){//Dosomething}我不明白为什么。我可以理解,如果我正在寻找一个小于零的值,因为unsignedint永远不会是负数。但我在这里寻找的只是它是否等于为零,unsignedint当然可以。如果在这个循环中我尝试预先递减而不是后递减,我什至可以看到这个错误,但事实并非如此。 最佳答案 您检查unsignedint是

c++ - 关于 unsigned int 的建议(江南 Style 版)

“江南style”视频(我相信你一定听说过)在youtube上的浏览​​量刚刚超过20亿。事实上,谷歌表示他们从未期望视频大于32位整数......这暗示了谷歌使用int而不是unsigned的事实他们的观点柜台。我认为他们不得不重新编写代码以适应更大的View。查看他们的风格指南:https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Integer_Types...他们建议“不要使用无符号整数类型”,并给出一个很好的理由:unsigned可能是错误的。这是一个很好的理由,但可以提防。我的问题是:通常使用uns

c++ - 关于 unsigned int 的建议(江南 Style 版)

“江南style”视频(我相信你一定听说过)在youtube上的浏览​​量刚刚超过20亿。事实上,谷歌表示他们从未期望视频大于32位整数......这暗示了谷歌使用int而不是unsigned的事实他们的观点柜台。我认为他们不得不重新编写代码以适应更大的View。查看他们的风格指南:https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Integer_Types...他们建议“不要使用无符号整数类型”,并给出一个很好的理由:unsigned可能是错误的。这是一个很好的理由,但可以提防。我的问题是:通常使用uns

c++ - 警告 C4244 : 'argument' : conversion from 'time_t' to 'unsigned int' , 可能丢失数据 -- C++

我制作了一个简单的程序,允许用户选择一些骰子然后猜测结果......我之前发布了这段代码,但有错误的问题,所以它被删除了......现在我不能有任何错误甚至此代码上的警告,但由于某种原因,此警告不断弹出,我不知道如何修复它...“警告C4244:'argument':从'time_t'转换为'unsignedint',可能丢失数据”#include#include#include#includeusingnamespacestd;intchoice,dice,random;intmain(){stringdecision;srand(time(NULL));while(decision

c++ - 警告 C4244 : 'argument' : conversion from 'time_t' to 'unsigned int' , 可能丢失数据 -- C++

我制作了一个简单的程序,允许用户选择一些骰子然后猜测结果......我之前发布了这段代码,但有错误的问题,所以它被删除了......现在我不能有任何错误甚至此代码上的警告,但由于某种原因,此警告不断弹出,我不知道如何修复它...“警告C4244:'argument':从'time_t'转换为'unsignedint',可能丢失数据”#include#include#include#includeusingnamespacestd;intchoice,dice,random;intmain(){stringdecision;srand(time(NULL));while(decision

c++ - 是否应该通过 std::cin 将负数读入 unsigned 失败(gcc,clang 不同意)?

例如,#includeintmain(){unsignedn{};std::cin>>n;std::cout输入-1时,clang6.0.0输出00而gcc7.2.0输出42949672951。我想知道谁是正确的。或者也许两者都是正确的标准没有指定这一点?如果失败,我的意思是(bool)std::cin被评估为假。clang6.0.0也无法输入-0。从Clang9.0.0和GCC9.2.0开始,在Clang的情况下使用libstdc++或libc++的两个编译器都同意上述程序的结果,与C++版本无关(>=C++11)使用并打印42949672951即他们将值设置为ULLONG_MAX并