为什么CE?
encore
2018-11-05 14:52:35
CE是最不应该出现的错误,因为编译器会有提示信息。虽然是英文的,[百度™](http://www.baidu.com)一下不过分吧。当然有时候会出现本机运行正常,但是OJ上CE的情况。这往往是由于编译环境不同造成的。主要注意以下几点:
* 没有```using namespace std;```
别笑,这种错误有时候真的会出现。
* 系统关键字、函数重名
不同的操作系统有不同的关键字和相关的函数。听说上次有个人在NOIP的时候把函数命名为```pipe```导致爆零,不知道是不是真的。
```cmath```库里面还有一个函数还是变量叫```y1```,当年被坑惨了。。。
* 全角空格(中文空格)
我希望你不是因为抄题解而导致这种错误。。。这个也不难查,系统会显示“stray '\xxx' in program”。
* 关于max、abs等简单函数
最好自己写。在某些oj上有时候会CE。
~~其实往往是因为该OJ编译器版本过低。~~
* 关于typedef(这个本机上也会CE
它没死,只是要注意
```cpp
typedef long long LL;
```
时,不能出现类似
```cpp
unsigned LL a;
```
这样的语句。
为什么?因为```typedef```不是单纯的文本替换。它定义了一个类型。而```unsigned```也是一个类型,这就导致类型重复定义了。
正确代码(例:
```cpp
typedef long long LL;
typedef unsigned long long uLL;
```
(不要指望```typedef register int RI```了