两个关于C语言的问题。

第一道题:intx=3;do{printf("%d\n",x-=2);}while(!(--x));输出值为什么是1和-2?第二道题:for(i=1;i++<4;);变量... 第一道题:int x=3; do{printf("%d\n",x-=2);}while(!(--x));输出值为什么是1和-2?
第二道题:for(i=1;i++<4;); 变量i的值为什么变成了5,它的计算是怎么样的?

望高手不吝赐教,不胜感激。
展开
 我来答
百度网友b452582
2010-11-03 · TA获得超过2581个赞
知道小有建树答主
回答量:953
采纳率:100%
帮助的人:346万
展开全部
1、在x=3的状态下进入do循环,第一次运行printf语句,首先使 x -= 2 ,x的内容减掉2,输出x的当前值,所以输出了1。接着进行循环条件判断,先进行 --运算,使x的内容变为0,!0的计算结果为真,循环继续进行。第二次运行printf首先 x-=2 即 x = 0-2,使x的内容变为-2,并被输出。当x=-2 时进行循环执行条件的判定,!(-2) 的计算结果为假(所有非零的数表示真),所以循环停止。输出的两次,为:1和-2。

2、i++ 这个表达式的计算方式是先取后+,产生的计算结果使i的当前值,然后i再进行+1运算。所以当i的内容是3时,i++<4 的计算结果为真,并且同时使i的内容变为4,循环继续,当循环下一次运行 i++<4 时i++产生的表达式的计算结果是4,同时进行+1运算使i的内容变为5,然后用i++的表达式结果4进行关系运算,4<4 关系运算计算结果为假,使循环停止。所以循环停止时,变量i的内容是5。

这题出的真够绕的。
suiyue_2009
2010-11-02 · TA获得超过846个赞
知道小有建树答主
回答量:1248
采纳率:0%
帮助的人:895万
展开全部
第一题:
打印1你应该知道的,说为什么是-2吧。
因为在while时,是先判断,然后在对X进行减1,所以第二次do时,x已经等于0,所以打印的结果为-2了。

第二题:
i++<4是先进行i<4的比较,然后i才加1.
在最后一次比较时,i=4,所以不进行循环,但是i还是自加1,所以等于5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式