使用short和long而不是int和double有什么好处?除了int和double之外还占用更多存储空间? 我的教授惩罚使用int和double的代码,没有任何解释。在我使用的几本教科书中,我还没有找到一个很好的理由。哪里可以更有用? 例如,我的代码中的许多函数之一
void randDir(int& x, int& y){
do{
x = rand() % 4 - 1;
y = rand() % 4 - 1;
if(x == 2) x=0;
if(y == 2) y=0;
}while(x == 0 && y == 0);
}
这就是我教授想要的
void randDir(short& x, short& y){
do{
x = rand() % 4 - 1;
y = rand() % 4 - 1;
if(x == 2) x=0;
if(y == 2) y=0;
}while(x == 0 && y == 0);
}
答案 0 :(得分:2)
使用short
的唯一好处是它占用的空间更少。如果您为一个非常紧密的内存环境进行编程,或者您有大量数字,或者您的数据将离开程序的地址空间(例如,要保存到磁盘或通过网络传输)那么这可能很重要。在其他情况下,由于处理器架构的设计方式,不必要地使用int
以外的类型可能实际上减慢您的程序。例如见:
如果你需要一个与你认为short
具有完全相同大小的类型,为了存储一些位模式或类似的东西,你应该使用其中一种精确宽度类型,例如{{1 },而不是std::int16_t
。因此,这通常不是使用short
的正当理由。
很可能你的C ++讲师很久以前就学会了在每个字节都很重要的环境中编写代码,并错误地认为现在仍然存在这种情况。可悲的是,这种先入为主的观念非常普遍。 (其他症状包括禁止例外和禁止使用标准库容器)。在这种情况下,你通常应该意识到聪明的人经常会说愚蠢的事情。 Stack Overflow是获取当前最佳做法信息的好地方,此处列出的书籍也是如此:The Definitive C++ Book Guide and List