为什么这个算式的i值和j值为9?

来源:百度知道 编辑:UC知道 时间:2024/06/23 18:24:13
main()
{
int k,i,j;
k=10;
i=--k;
j=k--;
printf("k=%d.i=%d,j=%d\n",k,i,j);
getch();
}
本人为新手
没有积分
还望各位高手能够指点一二!
谢谢!

这个涉及到自增、自减运算符的运算规则。
++和-- 单独 使用时,放在变量前面和放在后面是一样的。
可是这两个运算符放在更大的表达式中,前放和后放就有区别了。

放在变量后,如k++或k--,是先取出k原先的值参与表达式的运算,再使自己的值加1或减1。

放在变量前,如++k或--k,是先改变自己的值,再用改变后的值参与表达式的运算。

上面程序中的 i=--k; 因为"--"前置,所以先改变k的值,为9,再把9赋给i,所以i也为9。
j=k--; (注意:此时k的值为9)因为"--"后置,所以是先取出k的值9参与 j=k的赋值运算,于是j也为9。然后再把k的值减1

最后,程序的输出结果是:k=8 i=9 j=9

--k,k=9,前--返回减后的值
K--,K=8,但后--返回减前的值(实际上已经减了,但返回值仍为没减前的9)

i=--k,可以看成是:k=k-1;i=k;j=k--可以看成:j=k,k=k-1;这是自增和自减运算副的用发!--i,i--符号在前的是先运算在用值,符号在后的是先用值在运算!但两者都会改变i的值!

为什么i和j会交换值?a,b是形参。 C编程:求工友几组i,j,k符合算式ijk+kji=1333,其中i,j,k是0~9之间的一位整数. 已知:char c='A'; int i=1,j; ,执行语句j=!c && i++, 则 i 和 j 的值是? 若 x,i,j,k 都是 int 型变量,则计算 x = (i=4,j=16,k=32) 后,x的值为:______。 i与j为互相垂直的单位向量,a=i-2j, b=i+xj,且a与b的夹角为锐角,则实数x的取值范围是 已知单位向量i和向量j的夹角为60度,求证”(2倍向量j - 向量i)⊥ 向量i。 i,j,k是int,i=j=k=-1,执行i++||++j&&++k后,ijk的值分别变成了0,-1,-1,请问k的值为什么是-1? 语句int m,j=5; m=(j++)+(++j)+(j++);执行过后m,j的值为 为什么要i--和j--以及j=k和k=j? 编程求数N 满足 N=i*i*i +j*j*j+.... 其中i,j....为N 各位上的数值