zl程序教程

您现在的位置是:首页 >  其它

当前栏目

解析一个有关sizeof用法的题目--sizeof(i++)

一个 解析 用法 -- 题目 有关 ++ sizeof
2023-06-13 09:15:00 时间
复制代码代码如下:

 #include<stdio.h>
 intmain()
 {
 inti;
 i=10;
 printf("%d\n",i);
 printf("%d\n",sizeof(i++));
 printf("%d\n",i);
 return0;
 }

这三行输出应该是什么?
答案是:
10
4
10
第三个为什么不是11?i为什么没有自增?
请看C++标准;
5.3.3sizeof
Thesizeofoperatoryieldsthenumberofbytesintheobjectrepresentationofitsoperand.Theoperandiseitheranexpression,whichisanunevaluatedoperand(Clause5),oraparenthesizedtype-id.
也就是说,如果sizeof的操作数是一个表达式的话,这个表达式时不会被计算的。
sizeof当预处理看就行了,它后面括号里的东西,根本不求值,只根据C的一堆规则判断结果类型,然后返回结果类型的大小
另外一个操作符typeid也是如此。