使用short和long代替int和double(C ++)

时间:2017-10-24 00:01:40

标签: c++

使用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);
}

1 个答案:

答案 0 :(得分:2)

使用short的唯一好处是它占用的空间更少。如果您为一个非常紧密的内存环境进行编程,或者您有大量数字,或者您的数据将离开程序的地址空间(例如,要保存到磁盘或通过网络传输)那么这可能很重要。在其他情况下,由于处理器架构的设计方式,不必要地使用int以外的类型可能实际上减慢您的程序。例如见:

如果你需要一个与你认为short具有完全相同大小的类型,为了存储一些位模式或类似的东西,你应该使用其中一种精确宽度类型,例如{{1 },而不是std::int16_t。因此,这通常不是使用short的正当理由。

很可能你的C ++讲师很久以前就学会了在每个字节都很重要的环境中编写代码,并错误地认为现在仍然存在这种情况。可悲的是,这种先入为主的观念非常普遍。 (其他症状包括禁止例外和禁止使用标准库容器)。在这种情况下,你通常应该意识到聪明的人经常会说愚蠢的事情。 Stack Overflow是获取当前最佳做法信息的好地方,此处列出的书籍也是如此:The Definitive C++ Book Guide and List