c - 我怎样才能知道C语言中cpu/os的位数

标签 c linux sizeof bitcount

我知道如何使用 shell 获取 cpu 或操作系统的位数。

cat /proc/cpuinfo | grep lm #-> get bit count of a cpu
uname -a                    #-> get bit count of an operation system

但是,我们如何在 C 程序中获取这些位数。 这是一道面试题,我的解决方案如下:

int *ptr;
printf("%d\n", sizeof(ptr)*8);

但面试官说这是错误的。那么,正确答案是什么呢?

最佳答案

POSIX 提供了一个 C 函数 uname以及。您可以获得与 shell 命令 uname 类似的结果:

#include <stdio.h>
#include <sys/utsname.h>

int main(){
    struct utsname buf;
    uname(&buf);
    printf("sysname: %s\nversion: %s\nmachine: %s\n ", buf.sysname, buf.version, buf.machine);
    return 0;
}

我的机器上的输出:

sysname: Linux
version: #1 SMP Tue Oct 2 22:01:37 EDT 2012
machine: i686

关于c - 我怎样才能知道C语言中cpu/os的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19418681/

相关文章:

c++ - sizeof 对齐的空结构

对 #if 表达式感到困惑

linux - 无法安装Linux的rename to Mac

c - 如何查看 ruby​​ c 扩展回溯信息

python - os.rename()错误不存在这样的文件或文件夹

java - Java webapp 中的病毒扫描?

sizeof() 可以用来定义数组长度吗?

c# - 为什么 sizeof(Point) 是 8?

java - 运行时结构可以在开放 MPI 中使用吗?

c - 为什么我的键盘记录器不起作用?