cout系列和printf为什么结果不一样?
  • 板块灌水区
  • 楼主peterhuang98
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/9/8 16:36
  • 上次更新2024/9/8 19:55:18
查看原帖
cout系列和printf为什么结果不一样?
1082159
peterhuang98楼主2024/9/8 16:36

最近开始用

ios::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);

和自己的快读

template <typename T>
inline void read(T &t)
{
    t = 0;
    T flag = 1;
    char c = getchar();
    while ((c - '0') * ('9' - c) < 0)
    {
        if (c == '-')
            flag = -1;
        c = getchar();
    }
    while ((c - '0') * ('9' - c) >= 0)
    {
        t *= 10;
        t += c - '0';
        c = getchar();
    }
    t *= flag;
}

有时候确实会出现read cin getchar等的混合,但是大部分时候并不会出现什么问题。

最近做几道比较基础的题目(比如P1162 填涂颜色)的时候,却出现使用c风格的getchar和printf时,答案死活报错(格式错误),在本机上检查是对的(仅从终端输出观察,没有深究输出的文本)。当我全部改成cin cout的cpp风格后,却能够通过了。

我了解的一些基础,比如cin cout是多线程安全之类,但是提交的都应该是串行程序,而且都是简单的输入输出不应该会有这种问题呀。也许我了解不够多,有没有大神可以解释下为啥会出现c风格的输出在判题和cpp风格完全不一样的原因,因为这个问题我浪费了两个下午了,555555

2024/9/8 16:36
加载中...