【发布时间】:2017-10-24 00:01:39
【问题描述】:
使用 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);
}
【问题讨论】:
-
如果你想知道你的教授为什么以某种方式评分,直接问他们。我们不知道那位教授的想法,也不知道您正在学习的课程或您目前可能正在学习的课程的哪一部分。
-
视为“普通
ints 具有执行环境架构所建议的自然大小;提供其他有符号整数类型以满足特殊需求”(C++ 标准,[basic .fundamental]/2),惩罚使用int似乎是,容我们说,被误导了。double是另一回事——你不想无缘无故地使用浮点数。double与long完全不同。 -
你的意思是“short and float”吗?
-
int曾经是 native word 类型。在许多嵌入式系统的编译器上,它仍然是。它也是标准的整数类型(例如,professor 函数中的许多操作将使用int执行,然后转换为short)。我认为您应该向您的教授询问该规则的基本原理。在非嵌入式系统(如现代 PC)上编程 C++,不 使用int是没有意义的。 -
教授可能假设
RAND_MAX是 32767 并且不需要比short更大的任何东西来表示。不幸的是,他们错了。 32767 是RAND_MAX的最小值,因此将rand的输出塞进一个短的是有风险的。最好与导师确认。
标签: c++