Loading docs/intro/common-mistakes.md +33 −3 Original line number Diff line number Diff line Loading @@ -37,6 +37,36 @@ 14. 存图下标从 0 开始输入节点未 -1. 15. 没有考虑数组下标出现负数的情况 15. 赋值运算符和`==`不分。 - 示例: ```cpp if(n=1)puts("Yes"); else puts("No"); ``` 无论 $ n $ 的值之前为多少,输出肯定是`Yes`。 16. 没有考虑数组下标出现负数的情况 16. scanf 读入的时候没加 & 取地址符 17. scanf 读入的时候没加 & 取地址符 18. 在执行`ios::sync_with_stdio(false);`后混用两种IO,导致输出错乱。 - 可以参考这个例子。 ```cpp //这个例子将说明,关闭与stdio的同步后,混用两种IO的后果 //建议单步运行来观察效果 #include <iostream> #include <cstdio> using namespace std; int main() { ios::sync_with_stdio(false); //关闭IO后,cin/cout将使用独立缓冲区,而不是将输出同步至scanf/printf的缓冲区,从而减少IO耗时 cout<<"a\n"; //cout下,使用'\n'换行时,内容会被缓冲而不会被立刻输出,应该使用endl来换行并立刻刷新缓冲区 printf("b\n"); //printf的'\n'会刷新printf的缓冲区,导致输出错位 cout<<"c\n"; return 0;//程序结束时,cout的缓冲区才会被输出 } ``` Loading
docs/intro/common-mistakes.md +33 −3 Original line number Diff line number Diff line Loading @@ -37,6 +37,36 @@ 14. 存图下标从 0 开始输入节点未 -1. 15. 没有考虑数组下标出现负数的情况 15. 赋值运算符和`==`不分。 - 示例: ```cpp if(n=1)puts("Yes"); else puts("No"); ``` 无论 $ n $ 的值之前为多少,输出肯定是`Yes`。 16. 没有考虑数组下标出现负数的情况 16. scanf 读入的时候没加 & 取地址符 17. scanf 读入的时候没加 & 取地址符 18. 在执行`ios::sync_with_stdio(false);`后混用两种IO,导致输出错乱。 - 可以参考这个例子。 ```cpp //这个例子将说明,关闭与stdio的同步后,混用两种IO的后果 //建议单步运行来观察效果 #include <iostream> #include <cstdio> using namespace std; int main() { ios::sync_with_stdio(false); //关闭IO后,cin/cout将使用独立缓冲区,而不是将输出同步至scanf/printf的缓冲区,从而减少IO耗时 cout<<"a\n"; //cout下,使用'\n'换行时,内容会被缓冲而不会被立刻输出,应该使用endl来换行并立刻刷新缓冲区 printf("b\n"); //printf的'\n'会刷新printf的缓冲区,导致输出错位 cout<<"c\n"; return 0;//程序结束时,cout的缓冲区才会被输出 } ```