If statement If和If语句/使用{}

If statement If和If语句/使用{},if-statement,If Statement,我有一个简单的问题。为什么第一个程序不工作并返回0,但是第二个if进入另一个if工作?它不会下降并检查下一个是否 #include <stdio.h> int main () { int m,n,tmp,i; int nnumber=0,numbermin=9999999; scanf("%d %d",&m,&n); for(i=m;i<=n;i++) { tmp=i; while

我有一个简单的问题。为什么第一个程序不工作并返回0,但是第二个if进入另一个if工作?它不会下降并检查下一个是否

#include <stdio.h>
int main ()    
{
    int m,n,tmp,i;
    int nnumber=0,numbermin=9999999;
    scanf("%d %d",&m,&n);
    for(i=m;i<=n;i++)
    {
        tmp=i;
        while (tmp > 0 && (tmp % 10) % 2 == 0)
        {
            tmp/=10;  
        } 
        if (tmp == 0){ // This don't work i as want from this if to go down 
                       // there and check the next if
                       // i only got 0 at the printf("%d" , numbermin);
            nnumber=i;  
        }
        if(nnumber<numbermin)
        {
            numbermin=nnumber;
        }

    }
    if(nnumber==0)
        printf("NO");
    else
        printf("%d",numbermin);
}
#包括
int main()
{
int m,n,tmp,i;
int nnumber=0,numbermin=999999;
scanf(“%d%d”,&m,&n);
对于(i=m;i0&(tmp%10)%2==0)
{
tmp/=10;
} 
如果(tmp==0){//这不起作用,我希望从这个if开始下降
//如果有,请检查下一个
//我在printf中只得到了0(“%d”,numbermin);
nnumber=i;
}

如果(nnumber这是因为在第一个示例中,如果
tmp
不等于0,那么第二个
if
语句仍然可以计算为true,而第一个语句不等于true

if (tmp == 0){
    nnumber=i;  
}
if(nnumber<numbermin)
{
    numbermin=nnumber;
}

这可以解释运行这两个版本的代码时结果的差异。

这是因为在第一个示例中,如果
tmp
不等于0,那么第二个
if
语句仍然可以计算为true,而第一个不等于true

if (tmp == 0){
    nnumber=i;  
}
if(nnumber<numbermin)
{
    numbermin=nnumber;
}
这可以解释运行这两个版本的代码时结果的差异

if (tmp == 0){
    nnumber=i;
    if(nnumber<numbermin){
       numbermin=nnumber;
    }
}