c++函数参数,int短
C++ function argument, int short
当我在程序中只使用短整数时,是否使用:
void printVars(int x1, int x2, int x3)
或
void printVars(short int x1, short int x2, short int x3)
作为函数的参数?
提前感谢。
如果您100%确定永远不会使用比short int更大的整数,那么最好使用它,因为它可能节省2字节(在大多数情况下,在大多数系统上,但不一定)。不使用超出你需要的资源总是一个好主意但是,对于大多数应用程序,这种差异可能可以忽略不计。
如果您只使用short
s,那么传递short
函数参数没有任何危害,因为您不会丢失任何东西,但是使用short
s在内存占用或性能方面不会节省太多。
如果您想强调允许的值范围,我更喜欢short int
。这样可以节省空间,并使允许的值更清晰/更可读。
int
在性能上可能更好,但我不会指望它。
我的建议:如果您确定short int
是具有最佳匹配范围的类型,那么使用它
我会使用short
,这样你的代码更一致。此外,最好制作一个typedef
,以防将来想要更改类型。只需创建typedef short int Short
并在程序中使用它。稍后,您将能够在一个地方更改Short
类型
处理参数时最重要的事情是传达函数需要什么作为输入并将产生什么作为输出。如果你的函数只处理short范围内的数字,那么使用short
作为你的类型。你要问的是如果允许大于最大值的数字会发生什么?这是错误吗?
传递short或int的性能影响可能可以忽略不计或不存在。不要担心性能,除非它成为一个问题。
只有在您将要运行的计算机上运行测试才能真正回答这个问题。
在我的现代英特尔Ubuntu(2017)上,速度差异在噪音中下降。将short类型压入堆栈似乎只比int类型压入堆栈快1%,+/-约1%。
大部分的加速将来自于减少一半的内存,这将节省那些大数据/神经网络处理程序的页面交换。
- 类型为 "int*" 的参数与 C++ 中错误类型"int**"参数不兼容
- 为表示一个或多个操作的C++函数的int参数寻找类型安全的替换
- 为什么SDL_QueryTexture不为其 int* 参数赋值?
- 如何增加模板类型 int 参数?
- 如何将INT参数放入C 中的Sigleton构造器中
- 如何使用 int 参数循环访问模板函数
- 是否可以使用C 函数中的const int参数创建数组
- 在与时间一起使用 srand 时,如果我没有time_t参数明确地将参数转换为无符号的 int 参数,这有关系吗?
- 带有unsigned int参数的C++函数在使用negative调用它时会得到奇怪的结果
- 是一个与int[]参数完全相同的int*参数
- 我们可以将所有"int"参数和返回类型替换为 DllImport 方法签名中的"IntPtr"吗?
- 字符串和int参数出现C++编译器错误
- 模板int参数来自C++11中的常量表达式
- 避免使用int参数的模板类的C++爆炸性实例化
- 我们可以创建临时传入的"std::vector<int>"参数吗?
- 如何使用QT5中的lambdas将具有int参数的信号连接到具有枚举参数with的插槽
- 将指向函数的指针数组作为"int"参数传递是否可以将地址转换为整数?
- 为什么系统在没有警告的情况下接受作为int参数传递的long int
- 使用 int&& 参数通过 int&& 进行函数初始化
- 成员函数的Boost线程int参数不工作