草庐IT

int_parser

全部标签

c++ - 使用 int 作为直到运行时才知道的模板参数

我正在尝试使用整数作为类的模板参数。这是代码示例:templateclasssample_class{public:std::arraysample_array;}如果我这样做,它会起作用:sample_classsample_class_instance;但是,假设我在编译时不知道array_qty(模板参数)的值,只有在运行时才知道。在这种情况下,我基本上会传递一个int变量作为模板参数。为了演示,以下代码不起作用:inttest_var=2;intanother_test_var=5;inttest_array_qty=test_var*another_test_var;samp

java - 为什么int 1的最小值比正值更远离零?

我想知道为什么int、double等负值比正值多1。 最佳答案 简而言之:0必须适合某个地方,它在正数中,这使得它们比负数少1。示例:负数有5个槽,正数有5个槽,负数从-1到-5,正数从0到4不要忘记阅读@chris链接:)正如@WhozCraig所指出的,这仅对使用有符号二进制数的二进制补码表示的体系结构有效。 关于java-为什么int1的最小值比正值更远离零?,我们在StackOverflow上找到一个类似的问题: https://stackoverfl

c++ - 从类型 'int&' 的临时类型 'int' 的非常量引用的无效初始化

#includeusingnamespacestd;intfun(int&x){returnx;}intmain(){cout任何人都可以解释错误的原因吗?谢谢 最佳答案 10是一个常量,所以您不能传递对它的引用,只是因为更改常量的整个概念很奇怪。引入引用是为了解决C(和更早的C++)中的一个棘手问题,事实上一切都是按值传递的,如果你想将更改反射(reflect)回调用者,你必须传入一个指针并在函数中取消引用该指针以获取实际变量(用于读取和写入它)。在下一个ISOC标准中,这将是非常重要的好东西。虽然必须使用指针可能会让我们中的一些

C++ 将 int 和 string 转换为 char*

这有点难,我想不通。我有一个int和一个字符串,我需要将其存储为char*,int必须是十六进制即inta=31;stringstr="anumber";我需要将两者用制表符分开放入一个char*中。输出应该是这样的:1Fanumber 最佳答案 适当包含:#include#include#include像这样:std::ostringstreamoss;oss从以下位置复制结果:oss.str().c_str()请注意c_str的结果是临时的(!)constchar*所以如果你的函数需要char*您将需要在某处分配一个可变拷贝。(

c++ - 使用指针作为循环增量器而不是通常的 "int i"是个坏主意吗?

这方面的一个例子是:charstr[]="Hello";intstrLength=strlen(str);for(char*pc=str;pc编辑:解决了写保护内存问题。 最佳答案 我的一个问题是,如果您在for循环中省略*in*pc,您将获得很多乐趣。哎呀?更一般地说,要区分重新分配指针和修改值之间的区别稍微有点困难。但是,(虽然我手边没有),Stroustroup本人在C++编程语言一书中赞同(参见编辑)指针迭代。基本上,您可以使用指针算法在两个char数组之间实现非常简洁的字符串比较。简而言之,我建议以“只读”方式使用此类指针

c++ - 错误 : call of overloaded ‘max(int, int)’ is ambiguous

#includeusingnamespacestd;templateTmax(Tlhs,Trhs){returnlhsintmax(intlhs,intrhs){returnlhs(4,5)如何更正此错误? 最佳答案 这都是因为你的usingnamespacestd;。删除该行。通过该using指令,您将std::max(必须通过iostream以某种方式包含)带入全局范围。因此,编译器不知道调用哪个max-::max或std::max。我希望这个例子对于那些认为使用指令是免费的的人来说是一个很好的稻草人。奇怪的错误是一种副作用。

c++ - : (int) blabla * 255. 99999999999997 或 round(blabla*255) 常识正确的是什么?

最近我在webkit资源中发现了这个有趣的东西,与颜色转换(hsl到rgb)有关:http://osxr.org/android/source/external/webkit/Source/WebCore/platform/graphics/Color.cpp#0111constdoublescaleFactor=nextafter(256.0,0.0);//it'sheresomethinglike255.99999999999997//..somecodeskippedreturnmakeRGBA(static_cast(calcSomethingFrom0To1(blablabl

c++ - 为什么 64 位 GCC 在分配数组时警告将 const int 转换为 long unsigned int?

我有一个如下所示的文件test.cpp:voidf(constintn){unsignedchar*a=newunsignedchar[n];delete[]a;}intmain(){f(4);return0;}使用-Wsign-conversion在64位GCC中编译它标志产生警告:test.cpp:2:39:warning:conversionto‘longunsignedint’from‘constint’maychangethesignoftheresult[-Wsign-conversion](第2行是调用new的行)。我觉得GCC应该发出关于分配数组的警告似乎很奇怪,但下面

c++ - "char"和 "small int"比 "int"慢吗?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Performanceofbuilt-intypes:charvsshortvsintvs.floatvs.double嗨。假设您拥有32位处理器。8位char和16位shortint类型是否比native32位int慢?使用64位longlongint怎么样?默认情况下硬件是否支持这种数据类型,还是通过使用额外的指令将它们全部转换为32位数据?如果我必须存储少量字符,将它们存储为整数不是更快吗?

c++ - 如何诊断 g++ 4.3.4 中对 sqrt(int&) 的模糊调用

我的代码如下:#include#includefloatfoo(floatf){std::cout即使使用-pedantic-std=c++98-Wall-Wextra也不会报告最后一行中的调用不明确,但它不一定在其他编译器中工作,因为同样的原因foo(i)没有。gcc将以下内容添加到命名空间std:templateinlinetypename__gnu_cxx::__enable_if::__value,double>::__typesqrt(_Tp__x){return__builtin_sqrt(__x);}也就是说,它为所有整数类型X添加了inlinedoublesqrt(X)