代码在 Hackerrank 中运行良好,但在我的命令提示符中打印时,它给出了完全不同的输出
Code works completely fine in Hackerrank but when printed out in my command prompt, it gives complete different outputs
我是 C++ 的新手,最近我一直在学习如何使用 Vim 作为我的文本编辑器。我在 Hacker运行k 上做了一个非常基本的任务,它输入了一个 int、long、char、float 和 double,它们之间用 space 分隔,程序必须相应地输出所有值浮点值上升到小数点后 3 位,双精度值上升到小数点后 9 位。我在 Hacker运行k 上完成了代码,它工作得很好,但是当我在我自己的命令提示符下测试输入时,它输出了不同的值,这些值与它在 Hacker[=40 上输出的值不同=]k。这是我的代码。
#include <iostream>
#include <cstdio>
#include <iomanip>
using namespace std;
int main() {
int a;
long b;
char c;
float d;
double e;
cin >> a >> b >> c >> d >> e;
cout << a << '\n' << b << '\n' << c << '\n';
cout << fixed << setprecision(3) << d << endl;
cout << fixed << setprecision(9) << e << endl;
return 0;
}
我的输入如下:
211916801 97592151379235457 p 19856.992 -5279235.721231465
我的命令提示符中的输出是这样的:
211916801
2147483647
0.000
0.000000000
而 Hacker运行k 上的输出被接受,因为它是这样的:
211916801
97592151379235457
p
19856.992
-5279235.721231465
我用来在我的 VIMRC 中执行我的程序的绑定是这样的:
autocmd 文件类型 cpp nnoremap :w !g++ -std=c++17 -O2 -Wall % -o %:r && %:r.exe
有谁知道为什么代码在我的 Vim 上无法正常执行,但在 Hacker运行k 上运行正常?第一个整数打印正常,但在 b(长)之后,它打印出 运行dom 东西。在此先感谢您的帮助。
看起来您的代码依赖 long
占用 64 位。这通常是不正确的。例如在 32 位 vc++ 程序中它占用 32 位。因此,您应该改用 long long
或(更好的)标准库中的固定大小类型,例如 ::std::int64_t
.
我是 C++ 的新手,最近我一直在学习如何使用 Vim 作为我的文本编辑器。我在 Hacker运行k 上做了一个非常基本的任务,它输入了一个 int、long、char、float 和 double,它们之间用 space 分隔,程序必须相应地输出所有值浮点值上升到小数点后 3 位,双精度值上升到小数点后 9 位。我在 Hacker运行k 上完成了代码,它工作得很好,但是当我在我自己的命令提示符下测试输入时,它输出了不同的值,这些值与它在 Hacker[=40 上输出的值不同=]k。这是我的代码。
#include <iostream>
#include <cstdio>
#include <iomanip>
using namespace std;
int main() {
int a;
long b;
char c;
float d;
double e;
cin >> a >> b >> c >> d >> e;
cout << a << '\n' << b << '\n' << c << '\n';
cout << fixed << setprecision(3) << d << endl;
cout << fixed << setprecision(9) << e << endl;
return 0;
}
我的输入如下: 211916801 97592151379235457 p 19856.992 -5279235.721231465
我的命令提示符中的输出是这样的:
211916801
2147483647
0.000
0.000000000
而 Hacker运行k 上的输出被接受,因为它是这样的:
211916801
97592151379235457
p
19856.992
-5279235.721231465
我用来在我的 VIMRC 中执行我的程序的绑定是这样的:
autocmd 文件类型 cpp nnoremap :w !g++ -std=c++17 -O2 -Wall % -o %:r && %:r.exe
有谁知道为什么代码在我的 Vim 上无法正常执行,但在 Hacker运行k 上运行正常?第一个整数打印正常,但在 b(长)之后,它打印出 运行dom 东西。在此先感谢您的帮助。
看起来您的代码依赖 long
占用 64 位。这通常是不正确的。例如在 32 位 vc++ 程序中它占用 32 位。因此,您应该改用 long long
或(更好的)标准库中的固定大小类型,例如 ::std::int64_t
.