搜索
查看: 695|回复: 4
打印 上一主题 下一主题

为什么这段代码在不同编译器上运行结果会不同。?

[复制链接]
跳转到指定楼层
楼主
发表于 2015-10-4 17:52:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#include <stdio.h>
main()
{
    int s,t,A=10;
        double B=6;
        s=sizeof(A);
        t=sizeof(B);
        printf("%d,%d\n",s,t);


}


在tc上是2,8 在VC上是4,8
请问这是为什么

最佳答案

查看完整内容

应该是这样的: C语言中有些数据类型所占用的内存空间大小是由编译器根据操作系统的位数和自身的位数综合考虑决定的,TC是16位的程序,它认为字长就是16位(2字节),于是一个int就是2字节,而VC是32位程序所以int是32位(4字节) 有趣的是64位系统(和编译器)上的int也往往是4字节的,这可能是为了兼容性或者统一性考虑 总的来说这东西C标准里没有给出明确的规定,因此实现成什么样都是编译器的事,一般来说做一些小的程序的 ...
沙发
发表于 2015-10-4 17:52:19 | 只看该作者
应该是这样的:
C语言中有些数据类型所占用的内存空间大小是由编译器根据操作系统的位数和自身的位数综合考虑决定的,TC是16位的程序,它认为字长就是16位(2字节),于是一个int就是2字节,而VC是32位程序所以int是32位(4字节)
有趣的是64位系统(和编译器)上的int也往往是4字节的,这可能是为了兼容性或者统一性考虑
总的来说这东西C标准里没有给出明确的规定,因此实现成什么样都是编译器的事,一般来说做一些小的程序的时候不用考虑那么多
板凳
发表于 2015-10-4 19:12:38 | 只看该作者
当然了,你这儿是输出一个int类型和double类型所占用的内存量
地板
发表于 2015-10-4 19:13:07 | 只看该作者
编译器的不同,有些类型所占用的自己也会不太一样
5#
 楼主| 发表于 2015-10-8 14:23:49 | 只看该作者
981013 发表于 2015-10-4 17:52
应该是这样的:
C语言中有些数据类型所占用的内存空间大小是由编译器根据操作系统的位数和自身的位数综合 ...

谢谢你 非常详细!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表