Re: [问题] C中的If判断式

楼主: schizophrena (你很記者你很腦殘)   2015-03-07 15:07:51
※ 引述《ArcherState (电费不缴)》之铭言:
: 开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
: GCC
: 额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
: 没有
: 问题(Question):
: #include<stdio.h>
: #define maxint(a,b)({int a1=a,b1=b;a1>b1?a1:b1;})
: #define max(a,b)(a>b?a:b)
: int main(){
: int i=5,j=6;
: //printf("%d\n",maxint(i++,j++));
: //printf("%d\n",max(i++,j++));
: }
: Printf两个出来的值会不同,上面的printf会printf出6,下面的会printf出7,请问一下是为什么?
: 补充说明(Supplement):
: 两行printf我有分开来解除注解来测试,并非两行一起跑。
d = max(i++, j++)
会变成
i++ > j++ ? i++ : j++
执行顺序为:
5 > 6 ? //false
i = i+1 // i = 6
j = j+1 // j = 7
d = j // d = 7
j = j + 1 // j = 8
作者: bibo9901 (function(){})()   2015-03-07 15:15:00
第三个 j++ 应该是不会 evaluate ?

Links booklink

Contact Us: admin [ a t ] ucptt.com