¿Variable siendo utilizada sin ser inicializada? Lenguaje c

No puedo entender cuál es mi problema aquí. Sigo recibiendo un error en mi código.

Error: Error de comprobación en tiempo de ejecución: Variable utilizada sin inicialización. : advertencia C4700: variable local ‘b’ sin inicializar utilizada

¿Puede alguien ayudarme a resolver este problema? Cualquier ayuda sería apreciada. Estoy usando Visual Studio como un comstackdor para C y soy un principiante en él y esta es una de las tareas. No veo por qué sigo teniendo este problema si ingreso “int b;” En el inicio del progtwig. ¿No se inicializaría esa variable?

Aquí está el código:

#include  //Create a program that asks the user to enter a number until the user enters a -1 to stop int main() { int b; //as long as the number is not -1, print the number on the screen while(b!=-1) { printf("Hello there! would you please enter a number?"); scanf(" %d",&b); //as long as the number is not -1, print the number on the screen if(b!=-1){ printf("Thank you for your time and consideration but the following %d you entered wasn't quite what we expected. Can you please enter another?\n",b); //When the user enters a -1 print the message “Have a Nice Day :)” and end the program }else { printf("Have a Nice Day :), and see you soon\n"); } } return 0; } 

Cuando declara una variable, como la que tiene:

 int b; 

No se inicializa para tener ningún valor, se desconoce su valor hasta que se inicializa.

Para corregir este error, reemplace

 int b; 

Con

 int b = 0; 

El error está aquí:

 int main() { int b; //as long as the number is not -1, print the number on the screen while(b!=-1) { 

Como no has inicializado b , puede ser cualquier cosa. Entonces lo usas como una condición para el bucle while. Esto es muy peligroso.

Puede ser que el sistema le asigne aleatoriamente un valor de -1 (es una posibilidad rara) a él. En ese caso, su ciclo while no se activará.

Intializar b a algun valor

Por ejemplo, haz esto:

 int b = 0; 

Estás haciendo:

 int b; 

y luego haciendo:

 while(b!=-1) { 

sin inicializar nunca b . El problema es exactamente lo que su advertencia le dice que es.

C no inicializa automáticamente las variables locales para ti, el progtwigdor tiene que encargarse de eso. int b asigna memoria para su variable, pero no pone un valor allí, y contendrá cualquier valor de basura que haya en esa memoria antes de la asignación. Su variable no se inicializará hasta que asigne explícitamente, u otra función le asigne explícitamente, un valor.

 int b; 

Es una statement de variable. Explícitamente, el valor no se inicializa. El comstackdor emitirá instrucciones para que el progtwig reserve espacio para almacenar un número entero más adelante.

 int b = 1; 

Esta es una statement de variable con inicialización.

 int b; while (b != -1) 

esto es el uso de una variable no inicializada, pero también lo es

 int a = rand() % 3; // so 'a' can be 0, 1 and or 2. int b; if (a == 0) b = 1; else if (a == 1) b = 2; printf("b = %d\n", b); 

esta es también una causa potencial del uso no inicializado de b. Si ‘a’ es 2, nunca asignamos un valor predeterminado a b.

El resultado final es que siempre debe intentar especificar el valor predeterminado con la statement. Si la lógica que determinará la inicialización es compleja, considere usar un valor fuera de límites, ya que está usando -1.

¿Puedes ver el error en el siguiente?

 int b = -1; if (a == 0) b = 1; else if (a == 1) b = 2; else if (a > 2) b = 3; if (b == -1) { // this is an error, handle it. }