初学C语言问题,学生请教

来源:百度知道 编辑:UC知道 时间:2024/05/02 19:01:03
main()
{ int i=3,b;
b=-i++;
printf("\n%d %d",b,i);
}
/*输出结果:-3 4 疑问:b=-3可以看成是-i赋值给b,但是为什么-i++没有全部赋值过去*/
main()
{int i=3;
i=-i++;
printf("\n%d",i);}
/*输出结果:-2 疑问:这个为什么又全部赋值过去了,其中的运算过程是什么?*/

b=-i++;相当于b=-i;i++;
所以是b==-3,i==4

i=-i++
同理:相当于i=-i;i++;
所以i=-3;i=-2;因为变量相同,所以执行完后i的值都为-2.所以输出-2

书上说的很明白啊,++i表示在表达式执行前加上1,而i++是表达式执行后再加1,多看点书,C学好了,什么语言都容易入门

b=-i++;
i++ 在运算后执行,所以先是b=-i,再i+1
所以是-3,4

i=-i++
先i=-i 就是i=-3
再i+1 就是-2
因为这是对同一个变量操作,所以似乎是一起赋值的,但实际上是一样的