[PTA报错]warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result

PTA刷题时总是出现如标题所示的报错——警告: 忽略‘ scanf’的返回值,用属性 warn_unused_result 声明之类的,于是对出现报错的原因和解决方法做了查阅。

原因

我们经常也能在编译器中看到到未处理scanf返回值的警告,但我们往往选择忽略,PTA太严格了!只有解决这个警告,无奈~
首先scanf 函数的返回值反映了按照指定的格式符正确读入的数据的个数。不一定等于得到输入值的输入项的个数,也不是进入缓冲区的数据的个数。
如果输入数据与指定格式不符,则会产生输入错误。遇到输入错误,scanf函数会立即终止,返回已经成功读取的数据(即正确读入)的个数。
所以,通过scanf函数的返回值和指定输入数据的个数(由格式符决定)的比较,可以判断数据输入是否成功
j就安全性来说在大多数情况下不应忽略 scanf 的返回值,所以他们给了它一个属性 warn_unused_result ,告诉编译器给你一个警告,如果返回值真的不需要,那么就没问题。不过,通常最好检查一下,以确保你确实成功地读取了你认为自己读取的内容。

解决办法

附上大佬多种解决方法,后几种更加简单,建议大家阅读每种方法代码上面的英文解释,能够更加清晰得了解到为什么这样一句就能解决/屏蔽这个warning,链接如下。
Can someone help me understand this warning?(解决方案)

发布了21 篇原创文章 · 获赞 2 · 访问量 3386

猜你喜欢

转载自blog.csdn.net/weixin_44164333/article/details/104470106