关于C语言自加自减问题?
#include<stdio.h>main(){inta=-1,b=1;if((++a<0)&&(b--<=0))printf("%d%d\n",a,b);elsepri...
#include<stdio.h>
main()
{int a=-1,b=1;
if((++a<0)&&(b--<=0))
printf("%d%d\n",a,b);
else
printf("%d%d\n",b,a);
}
为什么答案是10?为什么b是1?求详解!衷心感谢! 展开
main()
{int a=-1,b=1;
if((++a<0)&&(b--<=0))
printf("%d%d\n",a,b);
else
printf("%d%d\n",b,a);
}
为什么答案是10?为什么b是1?求详解!衷心感谢! 展开
5个回答
展开全部
详解没用,关键靠你自己领悟,相信逻辑和条件运算符你都懂,那么我们来研究一下++i和i++的区别。
分别运行如下代码试试,你就会有更深刻的理解
#include<stdio.h>
main()
{
int i = 1; printf("i=%d,i=%d",++i,i++);
}
答案是i=2,i=1
所以,你应该明白这个原因了吧。一个是先加后赋值,一个是先赋值后加。
至于你纠结的10,很简单。因为打印符printf要求的是两个%d%d,所以,输出来的自然是10,如果这样写,你就明白了%d,%d,结果自然变成了1,0
分别运行如下代码试试,你就会有更深刻的理解
#include<stdio.h>
main()
{
int i = 1; printf("i=%d,i=%d",++i,i++);
}
答案是i=2,i=1
所以,你应该明白这个原因了吧。一个是先加后赋值,一个是先赋值后加。
至于你纠结的10,很简单。因为打印符printf要求的是两个%d%d,所以,输出来的自然是10,如果这样写,你就明白了%d,%d,结果自然变成了1,0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先++a得到a等于0,条件短路不执行b--,b依然为1
printf("%d%d\n",b,a);输出b=1,a=0;
c条件短路 自己google
printf("%d%d\n",b,a);输出b=1,a=0;
c条件短路 自己google
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
++a<0 a+1 再进行判断 a=0
b--<=0 b先判断 已经进入判断句
b-1 已经在判断句后面
b--<=0 b先判断 已经进入判断句
b-1 已经在判断句后面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf("%d%d\n",a,b);你的两个输出没有分开所以看着是10,其实一个是1,,一个是0.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询