黑马程序员技术交流社区

标题: 关于IOS基础知识C语言里面的一个问题? [打印本页]

作者: 火焱w    时间: 2014-12-16 12:35
标题: 关于IOS基础知识C语言里面的一个问题?
各位大家好,我现在在自学C语言,遇到一个问题不明白请大家帮帮忙?
就是C语言里面的++自增,--自减

例如;
int  x=0,y=0
y=x++
printf("y=%d,x=%d",y,x)
输出结果:
y=0,x=1
按照书上写的x++的意思是x=x+1
那么x++应该是1,y=x++的值应该也是1,但是结果为什么是0,希望大家指点迷津。非常感谢。

作者: se7ven    时间: 2014-12-16 12:59
x=0,y=0;之后执行x++,这个时候,表达式(x++)=0,变量x=1,把x++赋值给y,y自然等于0,
记住口诀:“X++是先用再加,++X是先加后用”,不知道我说的你明白不明白??如果你明白了,把这题的y=x++,变成y=++x,你再做出答案来……
作者: 从今以后    时间: 2014-12-16 13:54
各位大家好- -你可以把i++理解为
{
    int m = i;
    i = i + 1;
    return m;
}
作者: 火焱w    时间: 2014-12-16 14:33
se7ven 发表于 2014-12-16 12:59
x=0,y=0;之后执行x++,这个时候,表达式(x++)=0,变量x=1,把x++赋值给y,y自然等于0,
记住口诀:“X++ ...

我看了你的回答,现在终于明白了,非常感谢
y=++x的值是1
x++是先赋值再自增,++x 是先自增再赋值
作者: se7ven    时间: 2014-12-16 14:36
火焱w 发表于 2014-12-16 14:33
我看了你的回答,现在终于明白了,非常感谢
y=++x的值是1
x++是先赋值再自增,++x 是先自增再赋值 ...

哈哈,,,perfect,
作者: 火焱w    时间: 2014-12-16 14:36
从今以后 发表于 2014-12-16 13:54
各位大家好- -你可以把i++理解为
{
    int m = i;

明白了,感谢回答。:handshake
作者: xiezhongmin    时间: 2014-12-16 23:53
哪有那么复杂,那遇到更复杂的运算不是要想半天,y=x++,为什么要把++和y联系起来呢,++只跟x有关,++在前面就是x++先运算再赋值给y,++在后面就是先赋值,再x++,完全是2个运算,把它看成分别独立的就可以了,其实本来就是独立的,我个人觉得这样理解才是最透彻的,什么:“X++是先用再加,++X是先加后用,等过段时间或者复杂的运算把自己都给绕进去来了
作者: wx_hg1q2t6v    时间: 2014-12-17 00:01
先加和后加
作者: 浅听    时间: 2014-12-17 00:07
有些简单的问题想复杂了就会把自己绕进去的
作者: chasedream    时间: 2014-12-17 10:52
再看一遍视频
作者: 邹志鹏    时间: 2014-12-17 10:55
x++是先赋值再自增,++x 是先自增再赋值~!
作者: 马志华    时间: 2014-12-17 12:30
y=x++,y是x原来的值,也就是0;x++后x的值+1,x=1。
作者: 饶世红    时间: 2014-12-17 12:40
y=x++和y=++x,其实很简单的,没你想的那么难,你只要记住y=x++是y=x;x=x+1,而y=++x是x=x+1,y=x;就明白了,分开步骤来理解,一下就知道了
作者: 火焱w    时间: 2014-12-17 12:40
xiezhongmin 发表于 2014-12-16 23:53
哪有那么复杂,那遇到更复杂的运算不是要想半天,y=x++,为什么要把++和y联系起来呢,++只跟x有关,++在前面 ...

看了你的回答,感觉理解更透彻一点了,以前可能就是把++老是和y联系到一起了,现在明白了。非常感谢。
作者: 火焱w    时间: 2014-12-17 12:42
邹志鹏 发表于 2014-12-17 10:55
x++是先赋值再自增,++x 是先自增再赋值~!

谢谢大家的回答,已经明白了。
作者: zlmg    时间: 2014-12-17 12:50
以前我学习c语言的时候也搞不清什么先加后加




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2