我遇到一个问题“如何在不使用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;
}
也可以看看:
  • What is CHAR_BIT?
  • 关于c++ - 如何确定C语言中的处理器字长?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29519068/

    10-11 18:13