#include<stdio.h> void main() {int x=-1; do {x=x*x;} while(!x);//逻辑加? printf("%d",x); }

 我来答
zhuimengtian
2012-10-24 · 超过11用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:30.6万
展开全部
1.当x=-1时,得到x=(-1)*(-1)=1;
2.这时会判断条件的不满足while;
3.所以这时程序就会跳出来的,这时输出结果是1;
4.注while循环语句和for循环语句是不同的,while语句是先执行语句,然后再判断条件。for循环语句是先判断条件,然后再执行里面的语句。希望能帮助到你。O(∩_∩)O
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
顺晓
2012-10-24 · TA获得超过640个赞
知道小有建树答主
回答量:981
采纳率:0%
帮助的人:679万
展开全部
!x就是指当while(0)时候,停止运行。 x=x*x 结果是1
!x是0跳出循环。所以结果X是1
更多追问追答
追问
!(-1)的话是不也是0?
追答
-1就是-1,!是非的意思。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuhongnan
2012-10-24 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:192
采纳率:60%
帮助的人:49.1万
展开全部
  #include<stdio.h>
  void main()
  {
  int x=-1;
  do
  {x=x*x;}
  while(!x);//判断条件,非0为1,非(除零以外的数)=0,括号内若为0,跳出循环,不 为 0, 进入循环
  printf("%d",x);
  }
追问
逻辑加的时候 是不只要不是零,结果都为1,eg:7&&(-1)=1??
追答
嗯 不错 只要不是零就对 这个涉及到补码反码的问题 如果想明白你可以看看书
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蛋疼要治
2012-10-24 · TA获得超过2001个赞
知道小有建树答主
回答量:1516
采纳率:0%
帮助的人:576万
展开全部
我了个蛋疼这死循环啊,!X代表非0,x相乘就是1然后进入循环出不来了,不会有输出的。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuhaiming_0906
2012-10-24 · TA获得超过199个赞
知道小有建树答主
回答量:285
采纳率:0%
帮助的人:162万
展开全部
do {
x=x*x; //x=-1, X*X的值为1即现在x的值为1
} while(!x);//1的非为0
所以最后输出值为1.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式