【发布时间】:2013-06-14 22:32:46
【问题描述】:
考虑 int 在内存中占用 4 个字节。
要了解我在寻找什么,请看这个例子:
for(x=0;x<10;x++)
//do something
在这个指令中我知道x的值小于11,
我看过很多代码,大多数人将 x 声明为 int,
为什么我们不应该或为什么大多数人不将 x 声明为 short 甚至像 char !!
我想到了原因,找到了这个解释,例如:
short s=5;
s 在内存中占用 2 个字节,我所知道的是编译器将 5 视为 int 所以要把5换成s,5应该转成short才对!!
-> 所以这条指令占用更少的内存但更多的工作
int i=5;
这里 i 占用 4 个字节但不需要对话(5 是一个 int)
-> 所以这条指令做的工作更少,但占用更多的内存
原因和我想的一样!!
我希望我的问题很清楚
【问题讨论】:
-
in this for instruction I know that the value of x is less than 11,即使你是对的,x也小于 10。 -
将此类微优化留给优化编译器(例如
gcc -O2)。他们做的比你能做的要好。关注代码的正确性和可读性。 -
int 通常是寄存器宽度,因此分配给 char 或 short 实际上可能比分配给 int 需要更多的工作。
-
@zmo 在评估最终(失败)条件时,
x确实是 10,并且需要足够大以容纳它。 -
@zmo :Kevin 和 LightnessRacesinOrbit 的观点是 10 不小于 10。但 10 小于 11。