首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >代码在Hackerrank中工作得很好,但是当在命令提示符中打印出来时,它提供了完全不同的输出

代码在Hackerrank中工作得很好,但是当在命令提示符中打印出来时,它提供了完全不同的输出
EN

Stack Overflow用户
提问于 2020-08-31 11:10:32
回答 1查看 104关注 0票数 0

我是C++的新手,最近我一直在学习如何使用Vim作为我的文本编辑器。我在Hackerrank上做了一个非常基本的任务,它输入一个int、long、char、float和double,它们之间有一个空格分隔,程序必须相应地输出所有的值,浮动值达到小数点3位,双到9位小数位。我完成了Hackerrank本身上的代码,它运行得非常好,但是当我在自己的命令提示符中测试输入时,它输出的值与它在Hackerrank上输出的值不同。这是我的密码。

代码语言:javascript
运行
复制
#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

虽然Hackerrank上的输出是这样被接受的:

211916801

97592151379235457

P

19856.992

-5279235.721231465

我在VIMRC中执行程序时使用的绑定如下:

自动cpp文件类型cpp nnoremap :w !g++ -std=c++17 -O2 -Wall % -o %:r & %:r.exe

有谁知道为什么代码在我的Vim上没有正确执行,但是在Hackerrank上运行时却运行得很好?第一个整数打印得很好,但在b (long)之后,它打印出随机的东西。提前谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-31 11:14:49

看起来您的代码依赖于long来占用64位。这往往是不真实的。例如,在32位vc++程序上,它占用32位。因此,您应该使用long long,或者(更好的)标准库中的固定大小类型,例如::std::int64_t

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63669700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档