es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error C4700: variable local no inicializada; cómo inicializarla en una aplicación MFC

Aquí está la pequeña parte de mi código. Estoy tratando de convertir mis operandos de cadena en enteros cuando los necesito con la función “atoi”. Y me encuentro con un error “variable local no inicializada”. ¿Cómo puedo solucionar este problema?

CDC * pDC = GetDC();
CSize cz;

input1.GetWindowTextW(operant1);
input2.GetWindowTextW(operant2);

combo.GetWindowTextW(advanced_text);

if(groupCheckRadio == 0){        //AND
    const char* operant1;
    const char* operant2;

    int num1 = atoi(operant1);
    int num2 = atoi(operant2);

    result = (num1 & num2);
}
if(groupCheckRadio == 1){        //OR
    const char* operant1;
    const char* operant2;

    int num1 = atoi(operant1);
    int num2 = atoi(operant2);

    result = (num1 | num2);
}
if(groupCheckRadio == 2){        //XOR
    const char* operant1;
    const char* operant2;

    int num1 = atoi(operant1);
    int num2 = atoi(operant2);

    result = (num1 ^ num2);
}

//desplazando bits
if(checkShift.GetCheck() == 1){
    int selected_index = combo.GetCurSel();
    combo.GetLBText(selected_index,advanced_text);
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema es que las variables operant1 y operant2 están declaradas como punteros pero no están inicializadas antes de usarlas en la función atoi, lo que provoca el mensaje de error de una variable local no inicializada. Para solucionar este problema, debemos inicializar las variables antes de usarlas. Una solución es eliminar la palabra clave const de su declaración y asignar los valores de las llamadas a la función GetWindowTextW, de esta manera:

    char operant1[256]; // eliminar `const` y declarar como un búfer de cadena
    char operant2[256]; // eliminar `const` y declarar como un búfer de cadena
    
    input1.GetWindowTextW((LPWSTR)operant1, 256); // asignar la entrada a operant1
    input2.GetWindowTextW((LPWSTR)operant2, 256); // asignar la entrada a operant2
    
    int num1 = atoi(operant1); // convertir operant1 a entero
    int num2 = atoi(operant2); // convertir operant2 a entero
    

    En este código actualizado, las variables operant1 y operant2 se declaran como búferes de cadena de caracteres y luego se les asignan valores de las dos cajas de texto de entrada mediante las llamadas a la función GetWindowTextW. Luego, se utiliza la función atoi para convertirlas en enteros. Esto inicializará las variables antes de usarlas en las operaciones bit a bit y eliminará el error de variable local no inicializada.

Comments are closed.