猿问

前缀和后缀操作符有什么区别?

前缀和后缀操作符有什么区别?

下面的代码打印的值为9。为什么?这里return(i++)返回的值为11,并且--i值应该是10本身,有人能解释一下这是如何工作的吗?

#include<stdio.h>main(){
    int i= fun(10);
    printf("%d\n",--i);}int fun (int i){
    return(i++);}


汪汪一只猫
浏览 842回答 3
3回答

白猪掌柜的

前缀:int&nbsp;a=0;int&nbsp;b=++a;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;b=1,a=1在赋值之前,值将递增。后缀:int&nbsp;a=0;int&nbsp;b=a++;&nbsp;&nbsp;//&nbsp;a=1,b=0首先将‘a’的值赋给‘b’,然后增加‘a’的值

繁星coding

函数在此之前返回。i因为您使用的是后缀运算符(+),所以会增加。无论如何,增量i不是全局的-只针对各自的功能。如果您使用了预修复操作符,它将是11然后减少到10.所以你就回来了i作为10,并在printf函数中减少它,这将显示9不10就像你想的那样。
随时随地看视频慕课网APP
我要回答