1、如果语句int i=3;k=(i++)+(i++)+(i++);执行过后k的值为 9 ,i的值为 6
2、如果i=3,则k=(i++)+(++i)+(i++)执行过后k的值为 12 ,i的值为 6
3、如果i=3,则k=(++i)+(++i)+(i++)执行过后k的值为 15 ,i的值为 6
4、如果i=3,则k=(++i)+(++i)+(++i)执行过后k的值为 18 ,i的值为 6
这四个 我不懂诶
计算:从右往左,并输出到“缓冲区”。
1、缓冲区是一堆栈
2、第一步:处理后面的“i--”。8进入缓冲区,i=7。缓冲区:8 <-(指针)
第二步:处理“i++”。7进入缓冲区,i=8。缓冲区:7 8<-
第三步:处理”--i“。8进入缓冲区,i=7.缓冲区:8 7 8
第四步:处理“++i” 先自增1,然后8进入缓冲区,i=8 .缓冲区: 8 8 7 8
3、输出缓冲区数据(栈规则):8 8 7 8
另外自增 、自减 、还可能和编译器有关系 。
扩展资料:
后缀表达式 2级
postfix-expression [ expression ],数组下标运算。
postfix-expression ( argument-expression-list),函数调用,括号内的参数可选。
postfix-expression . identifier,成员访问,
postfix-expression -> identifier,成员访问,->号之前应为指针。
postfix-expression ++,后缀自增
postfix-expression --,后缀自减
( type-name ) { initializer-list }
( type-name ) { initializer-list , } 复合初始化,C99后新增。
参考资料:百度百科-C语言运算符
的值为5,因为++a和——a都在同一个表达式中,所以两个a
的值都为5,所以b=25。如果还不明白,你可以把程序改为b=++a*++a和b=--a*--a来帮助理解。
int
x=0;
printf("%d",x++);
输出的结果是0,但是输出语句结束后,在调试窗口中就可以看到i的值是1了。
int
x=0;
printf("%d",++x);
输出结果是1,调试窗口中显示的也是1。
懂?
1中全部是i++ 所以执行完表达式后i才自加3次,k=3+3+3=9,i=6
2中++i一次,所以执行表达式的时候i=4,所以k=12
3中++i二次,所以执行表达式的时候i=5,所以k=15
4中++i三次,所以执行表达式的时候i=6,所以k=18本回答被提问者采纳
比如:int a;
a=1;
a++;
这里a就等于2,
a--;
这里a就等于0,
自加就是在原来的基础上加1 自减就是在原来的基础上减1