草庐IT

INT_OPERATION

全部标签

c++ - 为什么 sqrt() 在没有为 int 定义的 int 变量上工作正常?

第3章Programming:PrinciplesandPracticeusingC++(第六次打印),Stroustrup指出(第68页):“请注意,sqrt()不是为int定义的”.下面是一个基于该章的简单C++程序:#include"std_lib_facilities.h"intmain(){intn=3;cout鉴于上面的引用,我预计编译或运行该程序的过程会以某种方式失败。令我惊讶的是,编译它(使用g++(GCC)4.2.1)并成功运行,没有错误或警告,并产生了以下完美的输出:Squarerootofn==1.73205因此我的问题是:如果sqrt()确实没有为int定义,那

c++ - 如何创建一个具有 32 位 int 和四个 8 位 char 类型的 union ,每个 char 类型都引用 32 位 int 的不同切片?

我想创建一个最大成员是32位整数的union。主要写到这里。然后是四个8位变量,可能是char类型,每个变量将引用32位整数的不同部分,例如:union{int32myint;charchar1[7:0];charchar2[15:8];charchar3[23:16];charchar4[31:24];}但我不确定如何在C++中执行此操作。 最佳答案 这可能有效:union{int32myint;charchars[4];}; 关于c++-如何创建一个具有32位int和四个8位char

c++ - __int64 到 CString 返回错误值 - C++ MFC

我想将一个__int64变量转换成一个CString。代码就是这样__int64i64TotalGB;CStringtotalSpace;i64TotalGB=150;printf("diskspace:%I64dGB\n",i64TotalGB);totalSpace.Format(_T("%I64d",i64TotalGB));printf("totalSpacecontains:%s",totalSpace);第一个printf打印"diskspace:150GB"这是正确的,但是第二个printf打印出随机的高数字,例如“总空间包含:298070026817519929”我也尝

c++ - 快速将 2 个 double 数组交织成具有 2 个 float 和 1 个 int(循环不变)成员的结构数组,并使用 SIMD double->float 转换?

我有一段代码是在x86处理器上运行的C++应用程序的瓶颈,我们从两个数组中获取double值,转换为float并存储在结构数组中。这是一个瓶颈的原因是它被调用时有非常大的循环,或者被调用了数千次。是否有使用SIMDIntrinsics执行此复制和强制转换操作的更快方法?我看过thisansweronfastermemcpy但没有解决类型转换问题。简单的C++循环情况如下所示int_iNum;constunsignedint_uiDefaultOffset;//aconstantdouble*pInputValues1;//arrayofdoublevalues,count=_iNum;

C++,最佳实践,int 还是 size_t?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Whentousestd::size_t?你好。假设使用模式相同(即没有负数),哪个更适合用于各种索引,int或size_t类型?在您对64位Intel的体验中,两者之间是否存在性能差异?谢谢

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数组之间实现非常简洁的字符串比较。简而言之,我建议以“只读”方式使用此类指针