【发布时间】:2017-02-19 03:41:10
【问题描述】:
如何仅使用按位运算符实现 sizeof 函数?这个问题是在面试时问我的。我试图解决它,但它只适用于无符号整数。这里我也附上了代码。
unsigned int a = 1;
int b = 0;
while(a != 0){
a = a << 1;
b++;
}
b = b/8;
printf("%d",b);
注意:不允许使用指针。
【问题讨论】:
-
这个问题已经被回答[这里][stackoverflow.com/questions/14171117/….
-
什么是“sizeof 函数”,如果不是 unsigned int,它应该如何工作?
-
我投票决定将此问题作为离题结束,因为它具有误导性并且不太可能对未来的访问者有用; sizeof 不是函数,SO 也不是关于如何以最不明智的方式解决简单问题...
-
实际上,我写的应该是您的回复,然后是“这是我的名片,当您需要不会浪费时间的程序员时告诉我这样毫无意义的练习”。
-
@Seb:我不同意这是一个愚蠢的练习,至少不是因为你给出的原因。当然,在生产代码中重新实现
sizeof是没有意义的,因为sizeofoperator 已经存在。这不是问题的重点。重点是测试受访者解决问题的能力。 (我不相信(大部分)像sizeofcan 这样工作的东西只能使用按位运算符来实现,但这是一个不同的问题;无论是问题还是 OP 的陈述似乎都不完整。)
标签: c bit-manipulation sizeof