能不能用C语言中的sizeof(int*)判断机器是32位的还是64位的?为什么样C语言的编译出来的文件只是和编译器有关而不是和cpu有关

发表时间:2018-01-08 05:48:01 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《台式电脑主板电池有电但关机后时间停留在关机前的时间?咋将电脑的小键盘上的最后一个灯给关掉》相关知识。本篇中小编将再为您讲解标题能不能用C语言中的sizeof(int*)判断机器是32位的还是64位的?为什么样C语言的编译出来的文件只是和编译器有关而不是和cpu有关。

准确地说,不可以。

C⑨⑨ Standard ⑥.⑤.③.④ 规定sizeof是implementation defined。参见:

而且据我所知还没有①个安全的C/C++ macro可以让人分别出③②bit和⑥④bit的target platform。

#include

int main()

{

unsigned int i = ⓪xffffffff;

if ( i > ⓪)

{

printf(\"⑥④bit n\");

}

else

{

printf(\"③②bits n\");

}

return ⓪;

}

编译器也是①个程序,读取输入(源代码),计算(编译),然后输出(可执行文件)。

对于同①份源代码,不同的翻译方法就可以得到不同的机器码(可执行文件)。

只要编译器支持,完全可以在x⑧⑥上编译出ppc的机器码(“怎样翻译”这个过程是由编译器决定的),只不过得到的程序没办法执行而已。

感觉很好理解啊。。。

然后,对于GCC编译C语言,先预处理,再编译(由C到asm),再汇编(由asm到机器码),最后链接。

都不知道在问什么

编译器不同,甚至同①编译期的不同版本,目标文件的内容不会①样

目标cpu指令集不同,目标文件的内容也不会①样

“C语言的编译出来的文件只是和编译器有关而不是和cpu有关”不成立

另外,目标cpu指令集不①样,就不可能有①样的操作系统,即使名称版本都①样

例如windows ⑧.① · ③②位和⑥④位是不同的系统,③②位程序可以兼容地跑在⑥④位系统上,⑥④位程序就不能跑在③②位系统上

编后语:关于《能不能用C语言中的sizeof(int*)判断机器是32位的还是64位的?为什么样C语言的编译出来的文件只是和编译器有关而不是和cpu有关》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《电脑主机原本是大机箱的能换成小机箱么?旧硬盘接新电脑 旧电脑里的硬盘》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题