![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
两个关于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,它的计算是怎么样的?
望高手不吝赐教,不胜感激。 展开
第二道题:for(i=1;i++<4;); 变量i的值为什么变成了5,它的计算是怎么样的?
望高手不吝赐教,不胜感激。 展开
2个回答
展开全部
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。
这题出的真够绕的。
2、i++ 这个表达式的计算方式是先取后+,产生的计算结果使i的当前值,然后i再进行+1运算。所以当i的内容是3时,i++<4 的计算结果为真,并且同时使i的内容变为4,循环继续,当循环下一次运行 i++<4 时i++产生的表达式的计算结果是4,同时进行+1运算使i的内容变为5,然后用i++的表达式结果4进行关系运算,4<4 关系运算计算结果为假,使循环停止。所以循环停止时,变量i的内容是5。
这题出的真够绕的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询