5-(++i)+(++i)
会先处理5-(++i),得出结果后再计算(++i),最后算出5-(++i)+(++i)的结果。=============
我想知道为什么这么算,不是括号优先吗?为什么?
会先处理5-(++i),得出结果后再计算(++i),最后算出5-(++i)+(++i)的结果。=============
我想知道为什么这么算,不是括号优先吗?为什么?
解决方案 »
- vs2010无法切换设计视图
- C# 串口sp_DataReceived方法
- C/S外网程序访问内网数据库的问题
- 我想让LABEL里背景图片的红色成为透明的
- 如何解析XML,得到<!-- -->其中注释信息,100分求解!!!帮顶有分啊!!!
- 请教高手:InvokeRequired,这个控制多线程的bool变量在什么时候为true什么时候为false?
- 求个排班算法,我已经想的蛋都疼了。。。
- [讨论]当写一个返回值为OracleDataReader时候,连接是否能自动释放?
- 一个关于xml节点处理的问题
- 在文本框验证出错了让文本框重新获得焦点,在C#中怎么实现不了?
- 如何让菜单显示在最上面 在titile和最大 最小之间 问下方法
- WIN FORM 水晶报表问题,急!!!!!在线等
再计算后面一个(++i)得出结果为3
然后再计算5-2+3=6;
这样解释没有违背括号优先的原则..也就是说等价于:
int i=1;
int a=++i;
int b=++i;
int c=5-a+b;
(++i)先自增再引用
(i++)先引用再自增
5-(++i)+(++i) =6//知道为什么不? 嘿嘿
(5-(i++)+(i++))==5-(++i)+(++i); //2个相等
5-(i++)+(++i)=7;//
5-(++j)+(j++)=5;
5-(++i)+(++i)为什么=6 哈哈
建议大家去读下内存 是不是和推想结果不一样捏 不要说高手不会这样写代码 貌似这是微软的面试题 哪看过 忘了
5-(++i)=3 //i=2
5-(++i)+(++i) //i=3
(++i)+(++i)=5//i=3
如果括号优先成立,那么应该就是先算两个括号了。
假设i=1,那么第一个括号算完i应该是2,接下来就应改算第二个括号了,然后得出i=3
那么最后应该是5-3+3=5了。但是实际结果是6,那么我觉得,很有可能是在第一个(++i)得出结果以后编译器把结果赋给了一个匿名变量(假设为j),然后算第二个括号得出结果赋给另一个匿名变量(假设为K),那么最后的表达式就变成了 5-j+k ,其中j=2,k=3。期待高人。
那么最后应该是5-3+3=5了。我觉得是这样,第一个括号得出2后会存于一个临时变量比如a中,另一个括号得出3后存于另一个临时变量比如b中...即
a=2
b=3
c=5-2+3=6;
int b;
b=5-(++k)+(++k);
>> b=5-(1000+1)+(++k)
>> b=5-(1000+1)+((1000+1)+1)
>> b=5-1001+(1001+1)
>> b=5-1001+1002
>> b=(-996) + 1002
>> b=6
有什么问题吗?