鱼C论坛

 找回密码
 立即注册
查看: 5501|回复: 12

我表示已经晕了

[复制链接]
发表于 2013-8-18 13:59:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main()
{
        int value;
        for(value=36;value>0;value/=2)
        printf("%3d",value);
} 1.jpg
这个代码和下面的这个为什么运行结果会不一样,for()不也是在循环前先运行value=36吗?第一个代码要是for(value=36;value>0;value/=2);这样加个空语句出来就是0了啊...这都是为什么..
#include<stdio.h>
int main()
{
        int value=36;
        while(value>0){
                value/=2;
                printf("%3d",value);
               
               
        }
}

2.jpg 还有就是第二个代码如果循环条件改成while(value/=2>0),怎么就成无限循环了
                有点啰嗦,还请见谅....

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-8-18 14:13:35 | 显示全部楼层
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int value=36;
  5.         while(value>0){
  6.                 //value/=2;//放在上面向导员进来先除了二 for 是value赋值后直接判断 再把value输出 再除以二
  7.                 //你这个是 先把value赋值 判断 除以二 输出  流程不一样  放到下面就一样了
  8.                 printf("%3d",value);
  9.                 value/=2;
  10.                
  11.         }
  12. }
复制代码
第二个问题
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int value=36;
  5.         while((value/=2)>0)//value/=2 要用括号括起来
  6.         {
  7.                 //value/=2;//放在上面向导员进来先除了二 for 是value赋值后直接判断 再把value输出 再除以二
  8.                 //你这个是 先把value赋值 判断 除以二 输出  流程不一样  放到下面就一样了
  9.                 printf("%3d",value);
  10.                 //value/=2;
  11.                
  12.         }
  13. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-18 14:15:24 | 显示全部楼层
这个问题一调试就出来了,
不要一遇到问题就来问,
要学着自己调试呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-18 14:23:41 | 显示全部楼层

诶这里是新手乐园啊  多少人会调试啊
不是C/C++版块啊  望请见谅
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-18 14:34:42 | 显示全部楼层
晕。回复的不显示,现 在论坛的回复太:huffy::huffy:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-18 14:35:59 | 显示全部楼层
9天 发表于 2013-8-18 14:34
晕。回复的不显示,现 在论坛的回复太

?? 能说清楚点吗????
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-18 14:37:56 | 显示全部楼层
友来友网 发表于 2013-8-18 14:15
这个问题一调试就出来了,
不要一遇到问题就来问,
要学着自己调试呀

那个怎么调试啊..还不会..
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-18 14:44:00 | 显示全部楼层
亲,,,这俩肯定不一样啊,第一个第一次循环所有执行完才value/2,,,第二个上来就/2了,,,对吧,这个有什么纠结的,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-18 14:51:34 | 显示全部楼层
至于第二个,是优先级的问题,/=的优先级低得很,比>还低,,,所以一直判断2>0可不是就无限循环了吗

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-18 15:08:24 | 显示全部楼层
学一下比较好,不容易依赖。
或许会难。不过坚持下就好。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-18 15:12:22 | 显示全部楼层
牡丹花下死做鬼 发表于 2013-8-18 14:13
第二个问题

追问一个,这样改了以后输出就不一样了啊,修改后的代码就比原来的输出少了个0#include<stdio.h>
int main()
{
        int value=36;
        while((value/=2)>0){
                printf("%3d",value);
        }
}
#include<stdio.h>
int main()
{
        int value=36;
        while(value>0){
                value/=2;
                printf("%3d",value);
        }
        }
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-18 15:15:56 | 显示全部楼层
张三疯 发表于 2013-8-18 14:51
至于第二个,是优先级的问题,/=的优先级低得很,比>还低,,,所以一直判断2>0可不是就无限循环了吗

知道了,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-5 11:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表