在printf中 i++ i-- i要考试了~ 在线等啊

来源:百度知道 编辑:UC知道 时间:2024/05/08 10:44:59
#include “stdio.h”
main( )
{ int i=1;
printf(“%d,%d,%d,%d\n”, i, i++, i++, i++);
}
结果为什么是 4 3 2 1~~ 详细的嘛~ 我知道函数参数的求值顺序是从右到左。。。。
还有若i=2~ i i++ i-- 结果是2 1 2~ 为什么啊????? 我要考试了~ 在线等啊

i,i++,i++,i++
把最右边的i++称为1号,往左依次为2号,3号和4号的话,
参数从右往左传入函数,执行1号i++;相当于{i;i=i+1;},所以输出的值是1,并且i变成2;然后执行2号i++;同理,输出的是2,并且i变成3;3号i++同理,输出3,并且i变成4;4号i的值就是4

i=2,i,i++,i--的话同理

那个结果应该是1 1 1 1 吧。不是什么4 3 2 1。不信的话你去试试。
首先有两种自加形式 i++和++i。先来说i++,i++是先把i的值赋给前面的表达式再自加一,而++i恰恰相反,它是先自加一再把值赋给前面的表达式。
#include <stdio.h> #include <stdio.h>
main()
{
int i=1;
printf("%d",i++); //i=1
printf("%d",i); //i=2
}

#include <stdio.h>
main()
{
int i=1;
printf("%d",++i); //i=2
}

加法和减法是一样的,这样说明白了吧!

i++的值等于i的值 所以最后一个i++等于1 然后i自加1变为2 第二个i++的值也等于i的值 但此时i