黄海n2皮卡四驱怎么样:请看下面的程序c语言

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/01 17:14:31
#include <stdio.h>
void main()
{
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);\\这个是如何运算得到结果的?
q=(++i)+(++j)+(++j);\\i和j是一样的吗?可以随便用其它的字母替换吗?
printf("%d,%d,%d,%d",p,q,i,j);
}

其实上面这位朋友的答案有问题。
解决这种问题可以用这种三步曲的方法来进行。
第一步:先将表达式中有++或--的问分挑出来,如果++或--在变量前面,就先将变量值+1或-1;如果++或--在变量后面,变量值保持不变。
第二步:用第一步得到的各变量的值,去进行正常的运算。
第三步:将++或--在变量后面的变量值去+1或-1。
如你的问题:
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++i)+(++j)+(++j);
在表达式p=(i++)+(i++)+(i++);里面。
第一步:有++的都在变量后面,所以我们保持i的值不变即i=5。
第二步:进行正常的运算,即5+5+5,所以p的值就为15。
第三步:将++在变量后面的变量值+1,第一个i++后,i的值为i=6,第二个i++后,i的值为i=7,第三个i++后,i的值为i=8。
所以在经过了p=(i++)+(i++)+(i++);这个表达式之后,p=15,i=8,j=5(无变化).
然后,我们记算第二个表达式,q=(++i)+(++j)+(++j);
第一步,所有的++都在变量前,所以先将i+1,因之前i的值已变为8,所以这里的i=9。++j有两个,所以j=7;
第二步,正常的计算,q=9+7+7,q=23
第三步,因为所有的++都在变量之前,所以这步没什么要算的了
所以在经过了q=(++i)+(++j)+(++j);这个表达式之后q=23,i=9,j=7
所以printf("%d,%d,%d,%d",p,q,i,j);这句的执行结果为:
15,23,9,7
这就是最终的结果

int i=5,j=5,p,q; \\变量定义
i和j虽然在定义的时候值是一样的,但却是不一样的变量,你可以把其中一个值给换成其他的初始值,然后再看结果,就知道了。
其实i和j就是个名字,你当然可以换,但是要注意,在使用的时候的名字要和当初定义的时候的一样

i j 分别是两个不同的变量

p=(i++)+(i++)+(i++);

---》(5++)+(i++)+(i++)
---》(6)+(i++)+(i++)
==》 6+(6++)+(i++)
---》6+7+(7++)

p=5+6+7

q=6+6+7
不能,i++是i=5然后自己加1,j++也一样,而++i,++j则是加完1后再负值给i,j此时的值是原来的值加1

这里的i和j是两个变量,当然能用其它的来替代,不过
i++表示先调用i的值,再给i 加上下1,而++i表示先给i加上1,再调用i的值。