请问这段代码有什么问题吗?

编程


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

我尝试过的:

请问这段代码有什么问题吗?

解决方案1

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

问题出在这两行代码上。 功能 printf 期望其参数按值传递,而您正在传递它们的地址。 要纠正此问题,您可以删除&符号,使其看起来像这样:

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

请注意,我移动了新行字符。 我更喜欢始终在一行文本后面添加换行符,以便后续行从零列开始。 这是我很久很久以前养成的习惯。

另请注意 – 我更喜欢使用该功能 弗格茨[^] 从控制台获取输入。 它在字符串中包含换行符,并且比 扫描[^]。 然后就可以调用 预告片[^] 和 阿托夫[^] 得到它们各自的数值。 出于您的目的,包含换行符并不重要,因为转换函数会忽略它。

解决方案2

当您使用 & 打印出数字 1 和数字 2 的地址时,您不需要的地址是您想要的值。

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