2 zhangweiiou zhangweiiou 于 2015.07.20 10:31 提问

关于单独的a++问题,而不是i=a++的问题困惑
 # include <stdio.h>

int main(void)
{
    int y = 2;
    int n = 3;

    int nextnum = (y + n++)*6;
    printf("%d\n", nextnum);

    return 0;
}

请问下这里的n++为什么不是n = n+1变成4,然后最终答案是(2+4)*6 = 36呢?
正确答案是n++之后n仍然=3,(2+3)*6=30!有高手指点下迷津吗?谢谢!

11个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.07.20 10:40
已采纳
 int nextnum = (y + n++)*6;
 这句话拆开来就是
 int nextnum = (y + n)*6;
 n=n+1;
danielinbiti
danielinbiti 回复爱学习的伟伟: 恩,如果有帮助,有时间顺手采纳一下
2 年多之前 回复
zhangweiiou
zhangweiiou 感谢热心人帮助!我懂了!
2 年多之前 回复
strutce
strutce   Ds   Rxr 2015.07.20 10:43

单独的n++和n有区别的;执行过n++他后面使用n实际上已经n+1了,i = n++ 的i=n+1是因为运算符的优先级原因,因为++的优先级大于=,所以在赋值i时,先执行了++

xzlLover
xzlLover   2015.07.20 10:44

如果把n++改为++n就是你想要的结果了

zhangweiiou
zhangweiiou 确实是的,感谢!
2 年多之前 回复
91program
91program   Ds   Rxr 2015.07.20 10:45

n++ 是先用 n 的值运算,再 n 加1
++n 是你想要的:n 先加 1,再进行运行

zhangweiiou
zhangweiiou 感谢好心人回答。
2 年多之前 回复
strutce
strutce   Ds   Rxr 2015.07.20 10:34

n++ 是先使用n在++的先用后加

CSDNXIAON
CSDNXIAON   2015.07.20 10:35

the target processor (armv4i) is not installed,问题解决方法
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

zhangweiiou
zhangweiiou   2015.07.20 10:36

补问:是不是可以这么理解?如果是这样的话,单独的n++和n就没区别了,他们都代表n,而赋值后的i = n++就代表n+1了?

weixin_29876087
weixin_29876087   2015.07.20 10:32

俩加号在后边是指表达式结束后再自增1,俩加号在前边是指先自增1再计算表达式。

hongke_fei
hongke_fei   2015.07.20 11:26

关于c语言的++x 和x++ 问题 是关于一种特殊规定 也就是机器自己的逻辑 这里的 结果和你想要的结果不一样 那你不妨在下面在多打印一下n的值 看看
其是否发生改变 答案是肯定的 你刚刚改变的n值只有到本次运算后才发生改变 所以遇到这个问题 要多注意 加油 加油

fang2020
fang2020   2015.07.20 15:28

n++ 跟++n的区别,
n++是让n参加操作后在+1,而++n是先自身+1后在参加操作。。。

共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片