下面代码的C语言中while(x--)是什么意思

#include<stdio.h>voidmain(){intx=2;while(x--);printf("%d\n",x);}结果为什么是-1呢???按道理在为0的时候... #include <stdio.h>
void main()
{
int x=2;
while(x--);
printf("%d\n",x);
}

结果为什么是-1呢???
按道理在为0的时候跳出了 啊!
展开
 我来答
爱教育爱学习
高粉答主

2019-10-30 · 说的都是干货,快来关注
知道小有建树答主
回答量:2774
采纳率:100%
帮助的人:100万
展开全部

while(!(--x));

等效于

while(--x==0);

即x自减一,判断减一后的值是否等于0,若等于0,则继续循环,否则推出;

--x的意思是x=x-1;!是逻辑非运算,!(--x)是循环条件while(!(--x));

表示当x=x-1运算后,如果x=0那么因为非运算,那么x不等于0,循环继续;

如果x=x-1运算后,如果x不等于0,则!(--x)=0,结束循环。

扩展资料

C语言中while循环

#include<stdio.h>

intmain()

{

intx=1;//定义变量x,初始值为1

while(x<=4)//循环条件

{

printf("x=%d\n",x);//条件成立,打印x的值

x++;//x进行自增

}

return0;

}

卡卡巴塞
推荐于2017-10-09 · TA获得超过377个赞
知道小有建树答主
回答量:329
采纳率:0%
帮助的人:122万
展开全部
while()中是逻辑判断语句;
只有两种值,0 和!0;
0为假,!0为真;
while()中!0时进行循环;
所以这句话的意思是:
直到x自减到0,循环停止;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yiqiu2324
推荐于2018-02-12 · TA获得超过634个赞
知道小有建树答主
回答量:117
采纳率:100%
帮助的人:99.2万
展开全部
首先了解下优先级与结合性
1.--为自减运算符,第二优先级,自右至左
2.x--这个表达式:先使用x的值,接着x=x-1;
整个表达式的值为x

while(x--)
{
循环体
}
首先
①判断x--这个表达式的值是否为0(即x的值),如果为0,不执行循环体
但仍然执行x=x-1;
例如:
int x=0; 则不执行循环体,x最终值为-1
②如果x的初值不为0,判断x--这个表达式的值是否为0,(不论是否为0)x=x-1,
如果x--表达式的值不为0,在执行循环体.(真绕...看例子)
例如:
int x=3;
while(x--)
{
printf("while\n");
}

printf("%d\n",x);
①3-->不为0-->x=x-1-->x=2
执行循环体 while
②2-->不为0-->x=x-1-->x=1
同上
③1-->不为0-->x=x-1-->x=0
同上
④注意 此时x=0,将不再执行循环体,但x=x-1;-->x=-1
(建议你逐步调试,很清晰)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱看小说的码农
2012-12-24
知道答主
回答量:73
采纳率:0%
帮助的人:12.1万
展开全部
先可以看成是
while((x--)!= 0)
但是。不管进不进while里,它都会给x-1的;

如你的题: 开始是2。
先判断是否为0,(不管是不是都会执行)再减1,(是进入,不是退出)再看是否进入while循环。
当x=0时:先判断是否为0,(不管是不是都会执行)再减1变为-1,(是进入,不是退出)再看是否进入while循环,此时退出了。

总之一句话。--x是先减1,再执行其它部分。x--是先执行其他的部分,再减1。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小名明SIU
2012-12-24
知道答主
回答量:38
采纳率:0%
帮助的人:17.1万
展开全部
x--是先参加运算,再执行x=x-1;while推出条件是0,就当x=0时推出(这是参加运算),再执行x=x-1;
很明显是-1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式