黑马程序员技术交流社区

标题: 小编程题 [打印本页]

作者: 王海江1    时间: 2014-6-11 21:50
标题: 小编程题
本帖最后由 王海江1 于 2014-6-13 22:09 编辑

int main()
{
       int a=1;
       if(a++>1)
                printf("%d\n",a);
       else
                printf("%d\n",a--);
       return 0;  
}


请问,结果打印的是a--表达式的值,而不是a的值对吧??怎么分析呢这个题?

作者: 康佳兴    时间: 2014-6-11 22:53
你代码本身就存在问题,if后面的{}没打全,如果补全之后输出的结果是2,我是这么看的,开始判断a>1不成立,然后走else,但是这时候a 会加一,然后进入循环,进入循环以后输出a,然后进行减一操作,你可以在后面加一个
printf("%d",a);这样好理解一点,希望帮到你了
作者: 王海江1    时间: 2014-6-11 22:55
康佳兴 发表于 2014-6-11 22:53
你代码本身就存在问题,if后面的{}没打全,如果补全之后输出的结果是2,我是这么看的,开始判断a>1不成立, ...

打错了,不好意思,改过来了
作者: 但愿''专注..    时间: 2014-6-12 09:43
你加个括号就行了
作者: chain    时间: 2014-6-12 21:50
请问这里哪来的循环呢?有for?while? 还是什么? 首先定义一个int类型的变量a然后if的条件是a++ >1?既然是a++先判断条件是否成立,然后自增一次,很明显条件不成立,执行else 后面的代码 ,此时a的值自增之后为2,所以打印结果为2




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2