鱼C论坛

 找回密码
 立即注册
查看: 4996|回复: 12

C语言求解

[复制链接]
发表于 2012-12-18 21:45:38 | 显示全部楼层 |阅读模式
1鱼币
#include <stdio.h>
void main()
{
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d",p,q,i,j);
}
结果怎么不是18,21而是15,22

最佳答案

查看完整内容

在vs上是i先运算,然后再++,j先++,再运算。结果是:15和24.研究这个没有意义,这个还和编译器有关的。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-12-18 21:45:39 | 显示全部楼层
在vs上是i先运算,然后再++,j先++,再运算。结果是:15和24.研究这个没有意义,这个还和编译器有关的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-18 22:04:17 | 显示全部楼层
是22不是24吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 22:22:05 | 显示全部楼层
这个和编译器处理方式有关 VC++6.0为15 22
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-19 08:46:14 | 显示全部楼层
15我好理解 22我确定百思不得其解

后来请教一高人用DUMPBIN反汇编给看了一下,告诉我q=(++j)+(++j)+(++j);这样的书写,应该是不规范的,在汇编里面看到处理已经乱了 啥的。。。不知道是不是真像
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-19 08:57:55 | 显示全部楼层
在(++j)+(++j)+(++j);中,根据+运算符的左结合性,在编译时,其实是先处理前面的((++j) + (++j))这部分,然后再将此结果再和++j相加。所以结果是j先自增两次然后再加上++j的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-19 08:59:15 | 显示全部楼层

(i++)+(i++)+(i++); 这个是先执行完整个表达式的其他操作后,然后才自增,所以结果是5+5+5     
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-19 22:10:18 | 显示全部楼层
这只有考试卷子上才会出现这种代码,花时间来研究这,还不如去研究算法。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-20 13:35:49 | 显示全部楼层
暗恋你很久了。 发表于 2012-12-19 08:57
在(++j)+(++j)+(++j);中,根据+运算符的左结合性,在编译时,其实是先处理前面的((++j) + (++j) ...

谢谢~!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-23 16:09:14 | 显示全部楼层
迷茫了
为什么q=(++j)+(++j)+(++j);
q=22而不是21?:L:L:L:L
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-28 00:19:57 | 显示全部楼层
编译器的计算法则  不用太纠结这种题  知道前++后++的区别就行了 ,不同的编译器之间得到的结果不同的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-28 10:37:26 | 显示全部楼层
. 伙计,劝你别吊死一棵树上啊,自增自减越学越晕的(我就是),所以,我都没学,直接秒过,真的,自我感觉用的地方不太多,(就算是用也不可能一个程序里都给用过来啊,)用的时候在看咯
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-24 18:04:13 | 显示全部楼层
来看看呵呵
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-13 19:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表