`short int` vs`int`

13 c++ standards

我应该打扰使用short int而不是int?有什么有用的区别吗?任何陷阱?

Che*_*Alf 15

short vs int

short除非有一个非常好的理由,例如在大量值上保存内存,或符合其他代码所需的特定内存布局,否则不要打扰.

使用许多不同的整数类型只会引入复杂性和可能的​​环绕错误.

在现代计算机上,它也可能引入不必要的低效率.

常量

撒上const宽松的地方就可以了.

const 限制可能发生变化的东西,让你更容易理解代码:你知道这个野兽不会移动,所以,可以忽略,并且思考针对更有用/相关的事情.

const然而,通过惯例省略了正式参数的顶级,可能是因为增益不足以超过增加的冗长度.

此外,在函数的纯函数声明中const,编译器会忽略参数的顶级.但另一方面,在将纯声明与定义进行比较时,其他一些工具可能不够智能而无法忽略它们,并且有人在早期关于comp.lang.c ++ Usenet组中的问题的辩论中引用了这些工具.所以它在某种程度上取决于工具链,但很高兴我从来没有使用过对这些工具有任何意义的工具const.

干杯&hth.,

  • 顶级const只会被声明中的编译器忽略,但不会在定义中忽略:`void foo(int);`和`void foo(const int);`是等效的前向声明.但是在实际的函数定义中,如果你试图更改值,添加的const会让编译器抱怨:`void foo(const int x){++ x; ``是编译器错误,而`void foo(int x){++ x; 好的.注意`void foo(int);`是它们中任何一个的前向声明(如`void foo(const int);` (2认同)

Ben*_*son 9

绝对不在函数参数中.很少有调用约定会对short和int进行区分.如果您正在制作巨型阵列,您可以使用,short如果您的数据适合short以节省内存并提高缓存效率.


Ebo*_*ike 8

本说的.实际上,您将创建效率较低的代码,因为无论何时进行任何比较,所有寄存器都需要去掉高位.除非您需要节省大量内存,否则请使用本机整数.这int是为了什么.

编辑:甚至没有看到关于const的子问题.在内部类型(int,float)上使用const是没用的,但是只要适用,任何指针/引用都应该绝对是const.对于类方法也是如此.

  • ** - 1**"在内在类型上使用const(int,float)是无用的""是不正确的,并且非常误导为所谓的事实,并且作为建议被荒谬地误导. (5认同)