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

C++ 使用short和long代替int和double(C+;+;),c++,C++,使用short和long而不是int和double有好处吗?除了int和double占用更多存储空间之外? 我的教授惩罚使用int和double而没有解释的代码。在我使用的几本教科书中,我并没有找到一个很好的理由。在哪里它们更有用? 例如,这是我代码中许多函数中的一个 void randDir(int& x, int& y){ do{ x = rand() % 4 - 1; y = r

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

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

如果您需要一个具有您认为的
short
大小的类型,为了存储一些位模式或类似的内容,您应该使用一种精确的宽度类型,例如
std::int16\t
,而不是
short
。所以这通常不是使用
short
的有效理由


<> P>你的C++老师可能在很久以前就学会了在每个字节计数的环境下编码,错误地认为现在仍然是这样。可悲的是,这种先入为主的观念非常普遍。(其他症状包括禁止例外和禁止使用标准库容器)。在这种情况下,你应该意识到一个事实,聪明人经常会说傻话。堆栈溢出是获取当前最佳实践信息的好地方,这里列出的书籍也是如此:

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

如果您需要一个具有您认为的
short
大小的类型,为了存储一些位模式或类似的内容,您应该使用一种精确的宽度类型,例如
std::int16\t
,而不是
short
。所以这通常不是使用
short
的有效理由


<> P>你的C++老师可能在很久以前就学会了在每个字节计数的环境下编码,错误地认为现在仍然是这样。可悲的是,这种先入为主的观念非常普遍。(其他症状包括禁止例外和禁止使用标准库容器)。在这种情况下,你应该意识到一个事实,聪明人经常会说傻话。Stack Overflow是获取当前最佳实践信息的好地方,这里列出的书籍也是如此:

如果您想知道教授为什么以某种方式评分,请直接询问他们。我们不了解那位教授的想法,也不知道你正在学习的课程或你目前可能正在学习的部分。因为“plain
int
s具有执行环境架构建议的自然大小;其他有符号整数类型是为满足特殊需要而提供的”(C++标准,[basic.basical]/2),对使用
int
进行处罚,我们可以说,这似乎是一种误导。
double
是另一回事——你不想无缘无故地使用浮点。
double
long
一点也不相似。你是说“short and float”吗?
int
过去是原生词类型。在许多嵌入式系统的编译器上,它仍然是。它也是标准的整数类型(例如,professors函数中的许多操作将使用
int
执行,然后转换为
short
)我认为你应该问你的教授关于这个规则的原理。在非嵌入式系统上编程C++(就像一个有点现代的PC)不使用
int
是没有意义的。教授可能假设
RAND\u MAX
是32767,不需要比
short
大的任何东西来表示。不幸的是,他们错了。32767是
RAND\u MAX
的最小值,因此将
RAND
的输出填充到short中是有风险的。最好与讲师核实。如果你想知道教授为什么会以某种方式评分,请直接询问他们。我们不了解教授的想法,也不知道你正在学习的课程或你目前可能正在学习的课程的哪一部分。视为“plain
int
s具有执行环境体系结构建议的自然大小;其他有符号整数类型是为了满足特殊需要而提供的”(C++标准,[basic.basic]/2),惩罚使用
int
似乎有误导性。
double
是另一回事-你不想无缘无故地使用浮点。
double
long
一点也不相似。你是说“short and float”“?
int
曾经是原生词类型。在许多嵌入式系统的编译器上,它仍然是。它也是标准的整数类型(例如,professors函数中的许多操作将使用
int
执行,然后转换为
short
)我想你应该问问你的教授关于这个规则的原理。在非嵌入式系统上编程C++(就像一个有点现代的PC)