【发布时间】:2017-02-09 17:21:00
【问题描述】:
如果编写程序,我需要一个小于 255 的数字,是否可以使用类型 unsigned char 用作数字,例如如果我需要一个数字来进行循环?是否有任何理由,包括坚持传统和惯例,坚持用int和float声明数字等。
例如,应该永远不要使用这样的代码吗?还是在这种情况下使用 unsigned char 是一种好习惯,因为它分配的内存比短 int 少?
#include <stdio.h>
typedef unsigned char short_loop;
int main(int argc, char *argv[])
{
short_loop i;
for(i = 0; i < 138; i++)
printf("StackOverflow Example Code\n");
return 0;
}
我要求将来参考,仅使用上面的代码来帮助说明。
【问题讨论】:
-
只有当它是一个大数组的小数字时,它才是真正的好习惯。使用一个 char 而不是一个 int 对总内存的影响几乎为零
-
char 是整数类型,为什么存储数字没有用?有关内置类型之间性能差异的讨论,请参阅 this。使用 8 位 int 实际上可能比使用更大的 int 慢
-
如果你和一个团队一起工作,他们会非常不喜欢你这样做。首先,因为不必要的 typedef 混淆了您对循环变量使用不寻常类型的事实。其次,因为它会造成维护噩梦。如果数组大小增加到 500 个条目,您的同事都不会期望他们需要更改循环变量的类型。
-
感谢大家的反馈。听起来我最好坚持 int。
-
您在谈论 char,但您的示例显示的是 unsigned char。这令人困惑。
标签: c variables memory-management integer