[英]Printf printing wrong char and 0
抱歉,如果這是一個愚蠢的問題,我是C ++的新手。 為什么不能將所有輸入正確復制到輸出?
#include <iostream>
#include <iomanip>
#include <limits>
#include <string>
using namespace std;
int main() {
int num1;
long num2;
long long num3;
char char1;
float num4;
double num5;
scanf("%d %ld %lld %c %f %lf", &num1, &num2, &num3, &char1, &num4, &num5);
//input: 211916801 452082285 97592151379235457 p 19856.992 -5279235.721231465
printf("%d %ld %lld %c %f %lf", num1, num2, &num3, &char1, &num4, &num5);
//expected output: 211916801 452082285 97592151379235457 p 19856.992 -5279235.721231465
//actual output: 211916801 452082285 68674564278975280 c 0.000000 0.000000
system("pause");
return 0;
}
因為您有&
的某些變量不是您想要的。
printf("%d %ld %lld %c %f %lf", num1, num2, &num3, &char1, &num4, &num5);
應該
printf("%d %ld %lld %c %f %lf", num1, num2, num3, char1, num4, num5);
編譯器應該對此有所警告,因為您傳遞的值與格式說明符不匹配。 如果不是,請打開/增加編譯器警告。
您應該將值本身而不是指針傳遞給printf
。
printf("%d %ld %lld %c %f %lf", num1, num2, num3, char1, num4, num5);
在Printf中(大多數情況下),您不在變量中使用&。
printf("%d %ld %lld %c %f %lf", num1, num2, num3, char1, num4, num5);
另外,如果您不熟悉C ++,則有更好的方法來執行I / O操作。 使用“ cin”代替“ scanf”,並使用“ cout”代替“ printf”
#include <iostream>
#include <iomanip>
#include <limits>
#include <string>
using namespace std;
int main() {
int num1;
long num2;
long long num3;
char char1;
float num4;
double num5;
//scanf("%d %ld %lld %c %f %lf", &num1, &num2, &num3, &char1, &num4, &num5);
cin >> num1;
cin >> num2;
cin >> num3;
cin >> char1;
cin >> num4;
cin >> num5;
//input: 211916801 452082285 97592151379235457 p 19856.992 -5279235.721231465
//printf("%d %ld %lld %c %f %lf", num1, num2, &num3, &char1, &num4, &num5);
cout << num1;
cout << num2;
cout << num3;
cout << char1;
cout << num4;
cout << num5;
//expected output: 211916801 452082285 97592151379235457 p 19856.992 -5279235.721231465
//actual output: 211916801 452082285 68674564278975280 c 0.000000 0.000000
system("pause");
return 0;
}
使用printf(...)
,原始類型按值傳遞,而不是按引用傳遞。 使用以下代碼:
#include <iostream>
#include <iomanip>
#include <limits>
#include <string>
using namespace std;
int main() {
int num1;
long num2;
long long num3;
char char1;
float num4;
double num5;
scanf("%d %ld %lld %c %f %lf", &num1, &num2, &num3, &char1, &num4, &num5);
printf("%d %ld %lld %c %f %lf", num1, num2, num3, char1, num4, num5);
system("pause");
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.