自增、自减运算符
答案:3 悬赏:70 手机版
解决时间 2021-02-18 09:10
- 提问者网友:欲劫无渡
- 2021-02-18 05:28
自增、自减运算符碰到具体例子还是不太明白。i++:i参与运算后,i的值再自增1,这里的“参与运算”是什么意思?是否包括这个自增运算本身?如果单独的一个“i++”,它的值是什么?
最佳答案
- 五星知识达人网友:何以畏孤独
- 2021-02-18 06:53
这样吧,我举个例子
i=1;
a=i++;
b=i++;
c=i++;
printf("%d%d%d%d",a,b,c,i);
结果为:a=1,b=2,c=3,i=4
解释:a=i++就是i先参与运算,在增加1,也就是先把i的值1赋给a,在加1,i的值变成2了
b=i++,先参与运算,在增加1,也就是先把i的值2赋给b(上一步,i的值变成2),在加1,i的值变成3了
b=i++,先参与运算,在增加1,也就是先把i的值3赋给c(上一步,i的值变成3),在加1,i的值变成4了
最后i的值是4
++i,又不一样,是先增加1,在赋值,下面给个例子:
main()
{
int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
}
i的初值为8,第2行i加1后输出故为9;第3行减1后输出故为8;第4行输出i为8之后再加1(为9);第5行输出i为9之后再减1(为8) ;第6行输出-8之后再加1(为9),第7行输出-9之后再减1(为8)。
如果还是上面那个例子:
i=1;
a=++i;
b=++i;
c=++i;
printf("%d%d%d%d",a,b,c,i);
结果为:a=2,b=3,c=4,i=4
i=1;
a=i++;
b=i++;
c=i++;
printf("%d%d%d%d",a,b,c,i);
结果为:a=1,b=2,c=3,i=4
解释:a=i++就是i先参与运算,在增加1,也就是先把i的值1赋给a,在加1,i的值变成2了
b=i++,先参与运算,在增加1,也就是先把i的值2赋给b(上一步,i的值变成2),在加1,i的值变成3了
b=i++,先参与运算,在增加1,也就是先把i的值3赋给c(上一步,i的值变成3),在加1,i的值变成4了
最后i的值是4
++i,又不一样,是先增加1,在赋值,下面给个例子:
main()
{
int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
}
i的初值为8,第2行i加1后输出故为9;第3行减1后输出故为8;第4行输出i为8之后再加1(为9);第5行输出i为9之后再减1(为8) ;第6行输出-8之后再加1(为9),第7行输出-9之后再减1(为8)。
如果还是上面那个例子:
i=1;
a=++i;
b=++i;
c=++i;
printf("%d%d%d%d",a,b,c,i);
结果为:a=2,b=3,c=4,i=4
全部回答
- 1楼网友:洒脱疯子
- 2021-02-18 08:08
i++表示我要用i的值,先取i的当前值。用完了以后,我让i加1.
++i表示我要用i的值,用之前,先把i加1,再取出来用。
单独的i++和++i都表示将i加一次。
- 2楼网友:一袍清酒付
- 2021-02-18 07:20
这是一类特殊的运算符,自增运算符++和自减运算符--对变量的操作结果是增
加1和减少1。例如:
--couter;
couter--;
++amount;
amount++;
看这些例子里,运算符在前面还是在后面对本身的影响都是一样的,都是加1或
者减1,但是当把他们作为其他表达式的一部分,两者就有区别了。运算符放在
变量前面,那么在运算之前,变量先完成自增或自减运算;如果运算符放在后
面,那么自增自减运算是在变量参加表达式的运算后再运算。这样讲可能不太
清楚,看下面的例子:
num1=4;
num2=8;
a=++num1;
b=num2++;
a=++num1;这总的来看是一个赋值,把++num1的值赋给a,因为自增运算符在变
量的前面,所以num1先自增加1变为5,然后赋值给a,最终a也为5。b=num2++;
这是把num2++的值赋给b,因为自增运算符在变量的后面,所以先把num2赋值给
b,b应该为8,然后num2自增加1变为9。
那么如果出现这样的情况我们怎么处理呢?
c=num1+++num2;
到底是c=(num1++)+num2;还是c=num1+(++num2);这要根据编译器来决定,不同
的编译器可能有不同的结果。所以我们在以后的编程当中,应该尽量避免出现
上面复杂的情况。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯