[ad_1]
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; }
[ad_2]
コメント