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

  • 相关阅读:
    百度百科目录导航树小插件
    Docker for windows部署mysql挂载数据卷
    ASP.NET CORE 2.0 不小心踩得坑
    获取MVC中Controller下的Action参数异常
    DataTableToList
    svn禁止提交的文件
    plush
    解决端口号被占用的问题
    vue-router
    vue-layer
  • 原文地址:https://www.cnblogs.com/kxzh/p/9143973.html
Copyright © 2011-2022 走看看