sizeof()的()中算术运算不改变变量的值
.
.
曾经遇到过这样的有趣问题,在打印sizeof(i++)之后,再打印i的值的时候,发现和之前预期的i自增1不一样,i的值没有改变,于是做了下面的试验:
#include <stdio.h>
int fun(int a)
{
return 2*a;
}
int main()
{
int i = 10;
printf("i:%d\n",i);
printf("sizeof(i++):%d\n",sizeof(i++));//是否是sizeof(i++),这sizeof中不影响里面的运算?
//仅仅进返回大小而已,让里面的运算都失效?
printf("i:%d\n\n\n",i);
i = 10;
printf("i:%d\n",i);
printf("fun():%d\n",fun(i++)); //10 20 11 12的结果进一步证明了上面的猜测,
//与sizeof运算符有关
printf("i++:%d\n",i++);
printf("i++:%d\n",i++);
return 0;
}
//二次感悟:貌似就是这样的,在sizeof中进行算数运算,就不会改变变量的值。
//但是其他的函数就会的,比如自定义的fun()函数、printf()函数
感觉挺有意思的,但是现在还是不是很明白为什么这样设计,但是希望以后的深入学习中能够更多的理解到里面的设计思想吧。