sizeof(++i+ ++i)

来源:互联网 发布:南京秘硕软件 编辑:程序博客网 时间:2024/05/19 12:14

sizeof(++i+ ++i)  

#include <stdio.h>

int main(char *argv[], int *argc)

{

     int i=3;

     int j;

     j = sizeof(++i+ ++i);

    printf("i=%d j=%d", i ,j);

}

上述程序,为什么打印出来的i=3呢, 我理解的是5

解答:

根据C99规范, sizeof是一个编译时刻就起效果的运算符,在其内的任何运算都没有意义,j = sizeof(++i+++i); 在编译的时候被翻译成 j=sizeof((++i+++i的数据类型)) 也就是 j = sizeof(int); 也就是 j= 4; (32bit系统,如果是16位系统,则j=2) 然后才会继续编译成最终的程序,当然在最终程序执行的时候,自然不会执行任何++i了。

转载:http://liushaozong4.blog.163.com/blog/static/685151122010926115825792/
原创粉丝点击