A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 王海江1 中级黑马   /  2014-6-11 21:50  /  1252 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王海江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的值对吧??怎么分析呢这个题?

4 个回复

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

打错了,不好意思,改过来了
回复 使用道具 举报
你加个括号就行了
回复 使用道具 举报
请问这里哪来的循环呢?有for?while? 还是什么? 首先定义一个int类型的变量a然后if的条件是a++ >1?既然是a++先判断条件是否成立,然后自增一次,很明显条件不成立,执行else 后面的代码 ,此时a的值自增之后为2,所以打印结果为2
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马