还是c语言的题目啊

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:28:13
# include<stdio.h>
void main()
{int i,j,a,b;
i=j=2;
a=i++;
b=++j;
printf("%d,%d,%d,%d",i,j,a,b);

}
得到的结果是3,3,2,3 为什么前面两个是3,3啊?? 它那里只是对a和b分别进行 i++ 和++j啊?? 怎么理解??

前边连个肯定是3了
因为i和j分别进行了自加运算

至于后边的 就要说先自加和后自加了
i++表示先运算后自加,先进行赋值运算使 a等于2,然后自加使 i等于3
++j表示先自加后运算,先进行自加 使 j等于3, 然后赋值运算使 b 等于3

i++是指i在使用后自加1,++i是指i在使用前加1
所以这里i和j都使用了一次(i++,++j),所以i和j 的值都是3
而a=i++这个时候正是i的使用期间,所以i还是2,所以a就是2
同理,b=++j时,j已经变成3了,所以b为3