关于while(cin>>x)和while(scanf(“%d,&x))的区别

这个真的很关键,是一处细节。

同样的形式,使用while(cin>>a)可以AC,但是使用while(scanf("%d",%a))就是TLE,使用while(scanf("%d",%a)==EOF)才能AC.
一、EOF

EOF,是End Of File的缩写,存在于文本文件的结尾,表示文件结束。EOF的值为-1。
在终端输入数据时,不会产生EOF。应用程序将一份已知的保留字符或序列解释为文件的结束,也就是EOF是ASCII码中的替换字符(ctrl+z)
EOF用作文件结束符,也常常用来判断函数是否成功执行,函数的失败时返还EOF.
二、流结束标志

按流结束标志检查方式分类

    阻塞式检查:ctrl+z
    只有按下enter后,才会检查是否输入ctrl+z
    非阻塞式检查:ctrl+d
    输入ctrl+d后,立即响应。
    但是在输入ctrl+d前,还输入了数据,此时ctrl+d相当于ente,将数据送入输入缓冲区,供读取使用,不在作为流结束的信号。

三、“cin"和"scanf”

    scanf的返回值是被输入函数scanf成功赋值的变量的个数 ,返回值>=0.
    在循环条件中,没有scanf(……)!=EOF的判定,循环while将一直进行。
    scanf(……)!=EOF可以替换成scanf(……)==1,或while(~scanf())
    cin是输入流对象,>>是重载的运算符,cin>>的返回值就是cin对象
    cin的使用:输入数据并按下enter后,数据送入输入缓冲区,cin检查缓冲区是否有可读取数据

总结
————————————————
版权声明:本文为CSDN博主「Q2532212247」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Q2532212247/article/details/108910408

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值