逗号运算和表达式
视频里小甲鱼老师说的一个例子y=(x=a+b),(b+c),老师说最后y的值是b+c的,可是我试了很多次y的值都是和x一样的,是我哪里弄错了吗? 还有一个自增的问题,j=5,然后y=(++j)+(++j)+(++j),为什么y是等于22,不是应该等于21吗? 问题1:按照语法应该是小甲鱼老师讲错了...问题2:我记得小甲鱼老师在讲汇编教程的时候讲过这个问题,编译器优化的结果..按照语法是答案是:21... 第一题:小甲鱼老师忘记了优先级的问题,应该是y=((x=a+b),(b+c)),否则赋值运算符优先级会比逗号快,直接就等于x的值了,而抛弃了后面的b+c。
第二题:这个问题当是也困扰了我很久,但是经过查找资料和询问前辈得到的回答是编译器不会三者同时运算的,而是两个数先运算再去算第三个数,那么按照这个原理,y=(++j)+(++j)+(++j),的式子就是y=((++j)+(++j))+(++j),前面的两个先运算,又因为++j的优先级高,那么第一个++j 后 j = 6,第二个++j 后 j = 7,然后再来算7+7=14,y = 14 + (++j),j这个时候是7,++j后是 j =8,y = 14+8 =22
可能你会不理解,没关系,点“回复”问,懂了麻烦点下“最佳答案”{:10_330:}
页:
[1]