您的位置:首页 > 其它

sizeif(i++).sizeof(++i) 的问题

2015-09-08 16:56 316 查看
考虑以下代码:

[code]int i = 3;
int j = sizeof(++i);
int k = sizeof(i++);
cout << i << endl;


对上述代码,输出的结果为 : 3

原因:根据C99规范, sizeof是一个编译时刻就起效果的运算符,在其内的任何运算都没有意义, k= sizeof(i++); 在编译的时候被翻译成 j=sizeof((i++的数据类型)) 也就是 j = sizeof(int); 也就是 j= 4; (32bit系统,如果是16位系统,则j=2) 然后才会继续编译成最终的程序,当然在最终程序执行的时候,自然不会执行任何++i 或 i++ 了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: