黑马程序员技术交流社区

标题: 关于纠结很多人的a++和++a的问题 [打印本页]

作者:   张恒宇    时间: 2015-5-9 22:16
标题: 关于纠结很多人的a++和++a的问题
#include <iostream>
#include<stdio.h>

int main(int argc, const char * argv[]) {
    int a=10;
    int b=(a++);
   
    printf("%d\n",b);
    int c=(++a);
   
   
    printf("%d,%d,%d\n",a,b,c);
    return 0;
}
这个测试你可以得到结果。。。
10
12,10,12
也就是第一个输出时a并不是11是因为要先调用a之后再给+1
下面c=12是因为a是不是被自加了啊=11了吧再执行++a就是先加一再输出。。。这样说还不明白。。。我也没办法
作者: ios专用    时间: 2015-5-9 23:28
a++ 是先赋值给变量a再+1 , ++a是a先+1 然后赋值给变量对吧
作者:   张恒宇    时间: 2015-5-9 23:33
ios专用 发表于 2015-5-9 23:28
a++ 是先赋值给变量a再+1 , ++a是a先+1 然后赋值给变量对吧

a++是先调用a,比如前面给a赋值是10现在你要输出a++那么是先输出a的值之后再进行运算。即输出10之后a++得到11再将11赋值给a,之后的a就是11.。。
作者: wangzhewjl    时间: 2015-5-10 09:36
这个问题最大的问题在于编译器,编译器不同结果有差异 。
作者: 我们要勇敢    时间: 2015-5-10 09:40
哦,这么回事丫
作者: 飞翔的猪    时间: 2015-5-10 10:07
不是不理解,只是被编译器给忽悠了,惭愧惭愧
作者: x331275955    时间: 2015-5-10 14:10
哦,原来是这样啊,学习了。
作者: 彭越    时间: 2015-5-10 14:35
++a和a++单独使用没效果,反之a++ 是先赋值给变量a再+1 , ++a是a先+1 然后赋值给变量对吧
作者:   张恒宇    时间: 2015-5-11 02:20
彭越 发表于 2015-5-10 14:35
++a和a++单独使用没效果,反之a++ 是先赋值给变量a再+1 , ++a是a先+1 然后赋值给变量对吧 ...

可以这样理解
作者: 649678291    时间: 2015-5-11 09:07
自增自减
作者: 我是小菜蛋    时间: 2015-5-11 20:17
学习了学习了
作者: 李闯    时间: 2015-5-12 18:52
了解了,谢谢
作者: yjadair    时间: 2015-5-12 22:53
刚看完这部分 感觉挺好懂的
作者: xiongmaoren518    时间: 2015-5-13 11:11
++a和a++的根本区别是,++a是先变后用,a++是先用后变,记住这个就会游刃有余,万变不离其宗嘛
作者: hehelaicaicai    时间: 2015-5-13 11:16
++a 与 a++ 单独用的时候,没区别 都是对a加1  。
不过要是要赋值给其他变量的话,就有区别了。
++a 是先把a加1,然后赋值给变量,a++是先赋值给变量再把a+1。这两种方式对a最后的值没有影响,a都会加上1,有影响的只是被赋值的那个变量。
作者: 15578797612    时间: 2015-5-13 11:23
好像明白了那么一点

作者: wxh794708907    时间: 2015-7-14 19:16
为什么你们技术分都那么高呢




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