【发布时间】:2019-06-05 10:15:58
【问题描述】:
我在 cpp 中有这段代码,我正在为一个竞争性编码问题编写代码。 这段代码似乎在第一行之后就停止工作了。即使我删除第一行,代码也会在第二行挂起。我的 CPU 嗡嗡作响,好像我陷入了无限循环。这两行都不能启动无限循环。
请看这里:https://imgur.com/N4YZnCi
查看正在打印的行号。
然后我删除了我认为可能会造成麻烦的行。但随后代码似乎就挂断了。
看到这个:https://imgur.com/uZZeYFE
#include<bits/stdc++.h>
#define line cout<<__LINE__<<"\n"; //this prints the line number in code
using namespace std;
int main() {
line //This prints
ios_base::sync_with_stdio(false); cin.tie(NULL);
line //This doesn't print at first
freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
line //This doesn't print in both attempts.
...
}
这在以前从未发生过。我不明白的是,即使我可能在其他地方犯了一些错误,我也从来没有碰过这两行。这是我的竞争编码模板。这两行不应该独立于其余代码吗?
【问题讨论】:
-
什么是
...?ios_base::sync_with_stdio(false); cin.tie(NULL);精确实现了在请求输入时可能不会刷新输出。因此,打印不是您查看程序评估位置的方式,因为程序可能在显示任何内容之前正在执行...。请发帖minimal reproducible example。 -
“这是我的竞争编码模板。”把它扔掉。此示例中只有两行我会在代码审查中接受:
int main() {和} -
如果在程序执行其第一个输入或输出操作之前调用它,则打开或关闭所有 iostream 标准流与其对应的标准 C 流的同步。如果在发生输入或输出操作后调用,则其效果由实现定义。
-
如果你使用神秘的魔法咒语而不了解它们的作用,就会发生奇怪的事情。 (如果你的程序在没有“不同步”的情况下太慢,问题出在你的算法上,而不是 I/O 上。从劣质算法中减少微秒是没有竞争力的。)
标签: c++