【发布时间】:2020-04-29 19:16:45
【问题描述】:
我正在尝试创建简单的游戏。任务是创建计算 int 大小的程序。 他们的代码是
#include <stdio.h>
int intSize(void)
{
unsigned int x,
i = 0;
x = ?;
while ((?) != 0)
?;
return ?;
}
int main()
{
printf("Size is %d bits\n",?);
return 0;
}
?是我应该放我的代码的地方。
这是我的尝试之一
#include <stdio.h>
int intSize(void)
{
unsigned int x,
i = 0;
x = 0;
while ((x>>1) != 0)
i++;
return i;
}
int main()
{
printf("Size ise %d bits\n", intSize());
return 0;
}
我知道 usigned int 是 4 字节,所以我使用按位运算来移动位,它应该是 32,但我得到 1。我会感谢任何帮助。
【问题讨论】:
-
用 0 初始化 x
while ((x>>1) != 0)如果立即为假,则正确的值为 -1,而你错过了函数调用中的 () -
是的,谢谢,这是我忘记调用函数的一个问题。固定的。但是值 1 或 -1 我仍然只得到一个结果。
-
问题陈述有缺陷,这应该报告给分配问题的老师。模板代码使用
unsigned,但不能保证计算unsigned中用于表示值的位数会为int生成正确的结果,因为C 标准不要求int使用相同数量的位为unsigned;可能有填充位。如果包含<limits.h>,则可以将x初始化为INT_MAX,然后可以计算位数。否则,由于溢出,无法以定义的方式探测int的宽度。
标签: c int bit unsigned-integer