关于PTA中使用scanf()忽略返回值导致报错
代码:
1 | /* PTA 7-7 计算摄氏温度 */ |
报错如下:
原因是scanf()
是有返回值的,编写的代码把返回值丢弃不用,这样就会导致运行时如果输入的格式不对就可能出问题,特别是在循环中。
解决方案:
1.强制将返回值转换为viod(空)
1 | (void)scanf("%d",&null); |
2.通过if
来避免警告
1 | if(scanf("%d",&null)){}; |
PTA的编译器过于严格,在其他的一些旧的编译器上可能不会出现上述情况,但scanf()
在通常情况下,不应忽略返回值,因此编译器返回了一个warning。
一般来讲,PTA中如果程序能通过,warning可以不用理会,但在生产环境中需特别注意。
参考网站