zoukankan      html  css  js  c++  java
  • 200180531-1

    struct st
    {
        int *p;
        int i;
        char a;
    };
    int sz=sizeof(struct st);
    如下C程序,在64位处理器上运行后sz的值是什么?
    24
    20
    16
    14
    13
    12

    答案:C 错选:F
    考点:1.struct的对齐原则,注意不同的编译器有不同的效果。
    2。不同的数据类型在32位和64位下所占字节的区别

    32位编译器:

          char :1个字节
           char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
          short int : 2个字节
          int: 4个字节
          unsigned int : 4个字节
          float: 4个字节
          double: 8个字节
          long: 4个字节
          long long: 8个字节
          unsigned long: 4个字节

      64位编译器:

          char :1个字节
          char*(即指针变量): 8个字节
          short int : 2个字节
         int: 4个字节
          unsigned int : 4个字节
          float: 4个字节
          double: 8个字节
          long: 8个字节
          long long: 8个字节

          unsigned long: 8个字节
     

     此处指针先占用8字节。int占用4字节,满足要求不用补齐,char占用一个字节,同时总的字节数必须满足8的倍数即16

  • 相关阅读:
    常见的兼容问题
    css3新增伪类
    完美的js运动框架
    C++ 常用宏
    多线程代码段 自清理线程
    寒假自学(十一)
    寒假自学(十)
    寒假自学(九)
    寒假自学(八)
    寒假自学(七)
  • 原文地址:https://www.cnblogs.com/kxzh/p/9143973.html
Copyright © 2011-2022 走看看