do-while循环不记得while中的变量

KAK*_*KAK 1 c

do{        
            float diameter;

            scanf("%f",&diameter);  
            Printf("Please input diameter");
            if(cheack1(diameter) == 0){
                Printf("Please input a valid number greater than 0");
            }else{
                circle(&area, &perimeter, diameter);
            }

            int cheack = cheack1(diameter);
}while(cheack == 1);
Run Code Online (Sandbox Code Playgroud)

我的do-while循环有问题.如你所见,我已经宣布了

int cheack = cheack1(diameter);cheack1(diameter);cheacks如果我输入的是正确的,如果它是正确的返回1.

但我的错误是:

p7t5.c: In function ‘main’: p7t5.c:87:11: error: ‘cheack’ undeclared (first use in this function) 似乎while(cheack == 1);是不记得cheackdo-while循环内部.

小智 8

尝试在循环之外将其声明为这样 - 原因 - 它的范围是块范围.这就是为什么它显示错误.

int cheack;
do{        
            float diameter;

            scanf("%f",&diameter);  
            Printf("Please input diameter");
            if(cheack1(diameter) == 0){
                Printf("Please input a valid number greater than 0");
            }else{
                circle(&area, &perimeter, diameter);
            }

            cheack = cheack1(diameter);
}while(cheack == 1);
Run Code Online (Sandbox Code Playgroud)


Day*_*rai 5

局部变量的范围将被完成,变量将在第一个闭}括号处被销毁.该变量在堆栈上,并且一旦作用域完成就不会保留在内存中.您需要定义cheack循环.