问个运算符的问题(老问题)

hphper 发布于 2013/11/03 17:20
阅读 170
收藏 0

在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);
//结果15,22,8,8
在php里结果 18,21,8,8

从网上搜 了,不同的语言结果不同,相同的语言 不同的编译器 得到的结果也可能不同,

还有说 从汇编 机器层面理解,愣是没看懂,我也知道讨论这没意义,实际项目中不会有这样的代码,但到底怎样理解啊,各位oscer看看,



加载中
0
一只囧蟹
一只囧蟹
不要把精力花在些地方
hphper
hphper
我也知道,但是我闲着也是闲着,要是不理解,总感觉别扭
0
南湖船老大
南湖船老大

老老实实写你的PHP去吧,不要把精力花在些地方。

真想知道,提示你几个关键词,“副作用、序列点”。

0
欣儿
欣儿
每种编译器的编译方式不同,这个不是以前的问题吗?又出现啦?
0
修改登录密码
修改登录密码

为什么要去理解一些完全没有用的代码呢?如果这么悠闲,

你大可以去研究如果人类能够突破光速会发生什么现象这类问题

0
Finlay
Finlay

win VS 2010 的出来的也是24.

q=(++j)+(++j)+(++j);

j自加三次,可能由于编译问题 q = 8 + 8 + 8。

只能这样解释。。

觉得这个问题与编译器的解释步骤有关系。

hphper
hphper
哦,谢谢了
0
hphper
hphper
哦,看来可以结贴了
0
小希希
没人会这样写代码这种纯教课代码不要去理会
0
中山野鬼
中山野鬼
相同的语言 不同的编译器? 如果说c的话,貌似是编译器对这些都是相同的处理吧。哈,怎么说你也加括号了。
泡不烂的凉粉
泡不烂的凉粉
对于一行中多个语句, 标准里还真没对这方面限制.
0
hphper
hphper
哦,受教了
返回顶部
顶部