pat等评测系统的各种出错总结(持续更新)

1.

A warning:comparison between signed and unsigned integer expressions [-Wsign-compare]:有符号数和无符号数的比较警告

为什么出错呢  很多时候你必须声明一下 unsigned int

如果不声明,有时候进行比较,一些现成的api比如stl的一些方法,返回值可能是无符号数什么的。比如size()方法,容积总不可能是负的吧?

在for循环里 不能用无符号32位整形作为判断条件

有时候多打一个unsigned或者signed 能省一些不必要的麻烦

 2.

warning: ignoring return value of ‘int scanf(const char*, ...)’,  

scanf 函数是有返回值的 返回的是读取的数据个数。很多时候我们都不用cin因为怕卡时间

但是scanf函数是不安全的,因为你没有使用返回值,所以评测机甚至很丧心病狂地警告你。比如pat的评测系统

解决方法:

1)加上void 强制类型转换忽略返回值(好笨)

2)用一下scanf的返回值,不就不会警告了嘛。

比如 

if(scanf("%d",&x) !=EOF  )

3)在vs上,可以用scanf_s

 

posted @ 2021-01-01 21:08  然终酒肆  阅读(310)  评论(0编辑  收藏  举报