C语言中关于自增的一个问题

发布时间:2024-06-01 12:02 发布:上海旅游网

问题描述:

int i=3;
int a=(i++)+(i++)+(i++);
printf("%d\n",a);
按说应该输出12啊,怎么会是9呢?i不是每次都递增吗?请高手指教运算过程

问题解答:

这是 i++ 和++i 的区别
i++ 代表先运算再++
++i 代表先++再运算

简单的记法就是如果一串表达式中有 i++ 也有 ++i ,i++ 当成i看,++i则要先+1再代入算,等整句运算完再看有多少++

比如上面的那个 都是 i++
先运算后++,结果相当于
a=i+i+i; //a==9
i++;
i++;
i++;

如果你把那三个括号分开才是12,写在一个表达式里面就是一个运算,i运算完了之后是6,表达式结果是9。

看来楼主是没有把i++和++i理解透彻
其实你只要记住一句话:i++就是i+1但是本条语句中i的值不会改变.
int a=(i++)+(i++)+(i++);//这算一条语句.所以在这一条语句中虽然i在++但是必须要到下一条语句才生效.
不信你在最后加一句printf("%d\n",i);

++i才是直接在本条语句就起作用.

9,
如果是
a=(++i)+(++i)+(++i)
就是18了
同时加的

热点新闻