如果输入的x比较小,它就会输出2x
符合程序
但是一旦x的值很大,那要么就不是2x,要么就是负一
不符合程序。
确实,输入得数字足够大之后,scanf稳定得将-1
保存在int类型中
搜了一圈资料,暂时没有找到权威说法,
我盲猜一下原因:
因为scanf是按照字符串的方式从控制台读取内容,然后再根据格式化字符转为指定的类型,最后保存到指定的变量中
所以,
当输入的数字足够大,比溢出为负数还要大,那么可能转为整数的那个步骤(估计是调用函数)处理不了,返回了-1,然后scanf把这个-1当作转换结果了
接下来我去看一下scanf的实现过程,如果不对的话我再更新