Por favor, ¿qué hay de malo en este código?

programación


C
#include <stdio.h>

int main()
{
    int number1;
    float number2;

    printf("Enter Integer:");
    scanf("%d",&number1);

    printf("Enter Float:");
    scanf("\n%f",&number2);

    printf("The Resulting Integer Is: %d",&number1);
    printf("\nThe Resulting Float Is: %f",&number2);

    return 0;
}

Lo que he probado:

Por favor, ¿qué hay de malo en este código?

Solución 1

C++
printf("The Resulting Integer Is: %d",&number1);
printf("\nThe Resulting Float Is: %f",&number2);

El problema está en estas dos líneas de código. La función printf espera que sus argumentos se pasen por valor y usted pasa sus direcciones. Para corregir esto, puede eliminar los símbolos para que se vea así:

C++
printf("The Resulting Integer Is: %d\n", number1);
printf("The Resulting Float Is: %f\n", number2);

Tenga en cuenta que moví el carácter de nueva línea. Prefiero seguir siempre una línea de texto con el carácter de nueva línea para que las líneas siguientes comiencen en la columna cero. Este es un hábito que adquirí hace mucho, mucho tiempo.

Otra nota: prefiero usar la función fgets[^] para obtener información desde una consola. Incluye el carácter de nueva línea en la cadena y tiene un comportamiento menos peculiar que escanear[^]. Entonces uno puede llamar remolque[^] y atof[^] para obtener sus respectivos valores numéricos. Para sus propósitos, sí importa que se incluya el carácter de nueva línea porque las funciones de conversión lo ignoran.

Solución 2

Cuando los imprime usando & proporciona la dirección del número 1 y el número 2, no desea la dirección, desea el valor.

C++
#include <stdio.h>

int main()
{
	int number1;
	float number2;

	printf("Enter Integer:");
	scanf("%d", &number1);

	printf("Enter Float:");
	scanf("\n%f", &number2);

	printf("The Resulting Integer Is: %d", number1);
	printf("\nThe Resulting Float Is: %f", number2);

	return 0;
}

コメント

タイトルとURLをコピーしました