Tolong apa yang salah dengan kode ini?

pemrograman


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;
}

Apa yang saya coba:

Tolong apa yang salah dengan kode ini?

Solusi 1

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

Masalahnya ada pada dua baris kode ini. Fungsinya printf mengharapkan argumennya diteruskan berdasarkan nilai dan Anda meneruskan alamatnya. Untuk memperbaikinya anda dapat menghilangkan ampersand sehingga menjadi seperti ini :

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

Perhatikan bahwa saya memindahkan karakter baris baru. Saya lebih suka untuk selalu mengikuti baris teks dengan karakter baris baru sehingga baris berikutnya dimulai dari kolom nol. Ini adalah kebiasaan yang sudah lama sekali saya lakukan.

Satu catatan lain – Saya lebih suka menggunakan fungsi tersebut fgets[^] untuk mendapatkan masukan dari konsol. Ini menyertakan karakter baris baru dalam string dan memiliki perilaku yang tidak terlalu unik dibandingkan scanf[^]. Lalu seseorang dapat menelepon cuplikan[^] Dan atof[^] untuk mendapatkan nilai numeriknya masing-masing. Untuk tujuan Anda, penting untuk menyertakan karakter baris baru karena fungsi konversi mengabaikannya.

Solusi 2

Saat Anda mencetaknya menggunakan & memberikan alamat nomor 1 dan nomor 2, Anda tidak menginginkan alamat yang Anda inginkan nilainya.

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をコピーしました