c语言 int i =5,j=5,p,q; p=(i++)+(i++)+(i++); q=++j+(++j)+(++j); printf("%d,%d,%d,%d\n",p,q,i,j);

能给我详细说明过程吗... 能给我详细说明过程吗 展开
 我来答
匿名用户

2012-12-02
展开全部
p的值可以确定是15(因为是先使用i的值再把i+1三次),i和j也可以确定都是是8(因为都自增了三次),但是q的值受编译器的运算顺序影响,值不确定(因为你不能保证j的值在运算的式子里是什么时候自增了,里面没有一个顺序点)。

这样子的题目不应该出的,因为这个运算过程并没有C语言标准的相关规定,由具体的编译环境自行确定。
更多追问追答
追问
但是觉得第一次用i=5然后第二次I=6然后第三次i=7    为什么是你说的那样能在详细点。吧每个括号分步说吗
追答
后自增,先使用i的值再自增,所以p=(i++)+(i++)+(i++)其实就是p=(i)+(i)+(i)。
至于q=++j+(++j)+(++j)这个则是不确定的,因为有可能是6+6+6,可能是6+7+8,可能是8+8+8,可能是6+7+7...因为你无法确定编译器会用什么顺序来计算j的值。
濮方雅BX
2012-12-02 · TA获得超过4042个赞
知道大有可为答主
回答量:2482
采纳率:60%
帮助的人:2474万
展开全部
痛恨这种题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式