我遇到一个问题“如何在不使用C语言的情况下确定处理器字长而又不使用sizeof()?”在一次采访中,我相信我给出了错误的答案。
我的代码如下:
int main(){
int num = -1;
int count = 0;
unsigned int num_copy = (unsigned int)num;
while(num_copy >>= 1){
count++;
}
printf("System size of int:%d", (count + 1)/ 8);
return 0;
}
输出答案仅由编译器选项决定。那么,如何获得正确的答案(系统字长)?
如果我将部分问题从“处理器字长”更改为“操作系统字长”怎么办?
最佳答案
与@holgac mentioned一样,long
数据类型的大小始终与计算机的本机字大小相同:
但是,像indicated by Thomas Matthews一样,这可能不适用于单词长度小的机器。
要确定编译器上long
的大小,只需使用sizeof(long)
:
int main(void)
{
printf("long is %d bits on this system\n", (int)sizeof(long)*CHAR_BIT);
return 0;
}
也可以看看:关于c++ - 如何确定C语言中的处理器字长?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29519068/