printf打印错误的char和0

kir*_*485 -1 c++

对不起,如果这是一个愚蠢的问题,我是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;
}
Run Code Online (Sandbox Code Playgroud)

usr*_*usr 5

因为你有&一些不是你想要的变量.

printf("%d %ld %lld %c %f %lf", num1, num2, &num3, &char1, &num4, &num5);
Run Code Online (Sandbox Code Playgroud)

应该

printf("%d %ld %lld %c %f %lf", num1, num2, num3, char1, num4, num5);
Run Code Online (Sandbox Code Playgroud)

由于您传递的值与格式说明符不匹配,您的编译器应该已经警告过此.如果没有,请打开/增加编译器警告.