草庐IT

INT_VOLUME_MAX

全部标签

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

c++ - 如何将 vector<unsigned char> 转换为 int?

我有vector用二进制数据归档。我需要从vector(2个字节)中取出2个项目并将其转换为整数。这怎么能不使用C风格来完成? 最佳答案 请使用移位运算符/位运算。intt=(v[0]这里提出的所有基于转换/union的解决方案都是AFAIK未定义行为,并且可能会在利用strictaliasing的编译器上失败。(例如GCC)。 关于c++-如何将vector转换为int?,我们在StackOverflow上找到一个类似的问题: https://stackov

c++ - : int (*b)[100]是什么意思

int(*b)[100]是什么意思,产生这个结果的代码说明是什么?#includevoidfoo(inta[100]){a[1]=30;std::cout以上代码输出:200x44ba4303030200x44ba430 最佳答案 int(*b)[100]是一个数组指针,一个可以指向100个int的数组的指针。*b[1]=20;是一个严重的运算符优先级错误,它会读取数组的边界。它应该是(*b)[1]。 关于c++-:int(*b)[100]是什么意思,我们在StackOverflow上找

c++ - 设置 int64_t 中的所有位

在下面的代码中,我希望将x中的所有位设置为1,但不知何故只设置了前32位:int64_tx=0xFFFFFFFF;x注意:在每行之后打印x会产生4294967295(低32位设置为1)。另外,尝试使用numeric_limits::min()没有成功。我的问题是如何设置x中的所有位?使用RHEL5.5。谢谢 最佳答案 x计算移位x的结果剩下32位并且对值不做任何操作。你想使用x相反。 关于c++-设置int64_t中的所有位,我们在StackOverflow上找到一个类似的问题:

c++ - CUDA,使用 memset(或 fill 或 ...)将 float 数组设置为 max val possible

编辑:感谢之前的回答。但实际上我想在CUDA中进行,显然CUDA没有Fill函数。我必须为每个线程填充一次矩阵,所以我想确保我使用的是最快的方法。这是我最好的选择吗?我想将float矩阵设置为可能的最大值(在float中)。做这项工作的正确方法是什么?float*matrix=newfloat[N*N];for(inti=0;i提前致谢。 最佳答案 CUDA中最简单的方法是使用thrust::fill.Thrust包含在CUDA4.0及更高版本中,或者您可以installit如果您使用的是CUDA3.2。#include#inclu

c++ - 您如何理解错误 : cannot convert from 'int []' to 'int []'

编译以下代码时:voidDoSomething(intNumbers[]){intSomeArray[]=Numbers;}VS2005编译器报错C2440:'initializing':cannotconvertfrom'int[]'to'int[]'我知道它实际上是在尝试将指针转换为一个无法工作的数组。但是,您如何向学习C++的人解释该错误? 最佳答案 说有类型和不完全类型:structA;是一个名为A的结构的不完整类型。虽然structA{};是一个名为A的结构的完整类型。第一个的大小尚不清楚,而第二个的大小已知。有不完整的类

c++ - 是否可以微优化 "x = max(a,b); y = min(a,b);"?

我有一个开始的算法intsumLargest2(int*arr,size_tn){intlargest(max(arr[0],arr[1])),secondLargest(min(arr[0],arr[1]));//...我意识到第一个可能不是最优的,因为当您认为知道最小值所需的信息已经存在一次时,调用max然后调用min是重复的你已经找到了最大值。所以我想我可以做intlargest=max(arr[0],arr[1]);intsecondLargest=arr[0]==largest?arr[1]:arr[0];减少对min的无用调用,但我不确定这是否真的节省了多少操作。是否有任何