为了账号安全,请及时绑定邮箱和手机立即绑定

大神解释下,为什么花括号放if(a==b)前面,输出什么也没有呢????

#include <stdio.h> 

int main()

{

    int a,b;

    for(a=2;a<50;a++)

    {

        for(b=2;b<a;b++)

        {

            if(a%b==0)

            break;

        }

    }                    //就是这个

    if(a==b)

    printf("%d ",a);

                       //为什么放在这就对??

    

}


正在回答

2 回答

- -你好像理解错我的意思了,我意思是我这两个代码区别是什么啊~~~~


#include <stdio.h> 

int main()

{

    int a,b;

    for(a=2;a<50;a++)

    {

        for(b=2;b<a;b++)

        {

            if(a%b==0)

            break;

        }

}               //花括号放在这为什么不对????

                        

    if(a==b)

    printf("%d ",a);

      }






#include <stdio.h> 

int main()

{

    int a,b;

    for(a=2;a<50;a++)

    {

        for(b=2;b<a;b++)

        {

            if(a%b==0)

            break;

        }

     if(a==b)

    printf("%d ",a);

}      //而放在这就能输出正确的结果????

      }






















0 回复 有任何疑惑可以回复我~
#1

onemoo

for 后面的大括号中是for循环体,也就是for每次循环要执行的内容。 上面的写法中, if(a==b) 这语句根本没有包含在外层for循环中,你的这两个for循环中没有输出语句,当然什么也打印不出了。 下面的写法, if(a==b) 这语句就包含在外层for循环中了。
2015-10-21 回复 有任何疑惑可以回复我~

因为当循环结束后,a = 50, b = 49, 所以如果if(a == b)放在printf("%d ",a) 前面,则需要a等于b的条件才输出a的值,而a是不等于b的,所以不会输出,如果if(a == b)放在printf("%d ",a) 后面,则不用判断a是否等于b就直接输出a的值。

C++技术网http://www.cjjjs.cn/,网站的零基础入门教程,可以带你从小白练就大神,文章深入浅出,通俗易懂,分析透彻,即使学过,也会大有收获,是学习必备网站哦。



0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

大神解释下,为什么花括号放if(a==b)前面,输出什么也没有呢????

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信