• 原题:
    机器: Linux xxxxxxxxxx 3.10.0-1127.13.1.el7.x86_64 #1 SMP Tue Jun 23 15:46:38 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    #include<stdio.h>
    #define mal(x, y) (x*y)
    int main(){
    int i=3;
    char **b[5][6];
    int a = mal(i++, sizeof(b)+5);
    printf("%dn", a);
    return 0;
    }
  • 输出结果为: 3456+5=465 或者 3856+5=725
  • 解析:
    指针大小:指针就是地址,地址就是和机器的地址线有关系,机器位数/地址字节数=8(有的平时使用的64位机器的指针大小也是4个字节,主要是为了兼容32位机器,如果变成标准,需要修改某些配置)
    宏定义:保持原样替换,不做优化
    前缀和后缀: 前缀,先取后加;后缀,先加后取
内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/louz/p/13883792.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!