首页 > 其他分享 >while(~scanf(“%d“, &n))的含义

while(~scanf(“%d“, &n))的含义

时间:2023-06-19 14:34:02浏览次数:26  
标签:EOF scanf 取反 while 返回值 含义 输入

canf("%d%d", &a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2;如果只有a被成功读入,返回值为1;如果a和b都未被成功读入,返回值为0;如果遇到错误或遇到end of file,返回值为EOF,且返回值为int型。

注:这里返回值为2,就是输入的a,b都匹配,返回值为1就是输入的a,b只有一个匹配,返回值为0就是当用户输入不匹配的时候就返回零。例如:

int main()
{
int a = 0, b = 0;
int re = scanf("%d %d", &a,&b);
printf("%d\n", re);
return 0;
}

while(~scanf("%d", &n)) 等价于 while(scanf("%d",&n)!=EOF)
EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束。EOF通常的值为-1。

while(~scanf("%d", &n)) 意思就是当有值输入的时候,进入while,当没有值输入时就结束while。(输入了值,如果scanf成功读取了就返回1,取反的结果不为0,进入while;如果scanf没有成功读取,返回0,取反的结果不为0,进入while;如果没有输入,到达文件末尾则返回-1,取反的结果为0,结束while。)

注意:在终端(黑框)中手动输入时,系统并不知道什么时候到达了所谓的“文件末尾”,因此需要用<Ctrl + z>组合键然后按 Enter 键的方式来告诉系统已经到了EOF,这样系统才会结束while.

这个程序当我输入1,scanf返回1,取反为-2,进入循环,打印a=1,re=-2;

循环继续,当我输入4,scanf返回1,取反为-2,进入循环,打印a=4,re=-2;

循环继续,当我输入b,scanf读取失败,返回0,取反为-1,进入循环,此时a还是等于4,打印a=4,re=-1。

循环继续,当我输入ctrl+z,再按下enter,告诉程序已经到了EOF(通常EOF=-1),取反为0,循环结束。

标签:EOF,scanf,取反,while,返回值,含义,输入
From: https://www.cnblogs.com/yitongtianxia666/p/17491061.html

相关文章

  • scanf
    //scanfXS.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"intmain(intargc,char*argv[]){ inti; charbuff[256]; printf("pleaseinputanintnumber:\n"); scanf("%x",&i);p......
  • python中parse的action = store_true含义
     我们在python脚本中经常看到action="store_true,如下图: parser.add_argument('--image',default=False,action="store_true",help='Imagedetectionmode,willignoreallpositionalarguments') 如果运行代码时加了   --image,那么im......
  • 各种括号的含义
    一、圆括号()1.1函数、函数的参数及函数调用1.2用于表达式(子表达式)的计算优先级1.3强制数据转换1.4关键语句的约束1.5数据的个性标识利于搜索某些特定的数据。二、方括号[]方括号[]用于数组(指针)、索引器和属性。2.1数组Array程序员一般都是从数组开始认识方......
  • ChatGPT 3.5 和 4 后缀的 turbo,32k 是什么含义
    什么是GPT-3.5-Turbo?GPT-3.5-turbo是OpenAI推出的一种自然语言处理模型,基于GPT(GenerativePre-trainedTransformer)架构。它是GPT-3的一个更精简和高性能的变体。GPT-3.5-turbo模型采用了类似的架构和训练方式,具有强大的语言生成和理解能力。它通过大规模的预训练数据和自监督......
  • suse12操作系统普通用户报错error while loading shared libraries: libcap.so.2: can
    1、故障描述linux主机普通用户执行ping命令报错ping:errorwhileloadingsharedlibraries:libcap.so.2:cannotopensharedobjectfile:permissiondenied2、故障原因 超级用户修改了根目录权限为655 3、解决方案chmod755/ ......
  • aapium报错 An unknown server-side error occurred while processing the command.
    现象:1、appium日志存在报错信息:(1)中间:adbfailedtostartdaemon*(2)结尾:POST/wd/hub/session500287ms2、appium图形界面设置参数后,点击startsession报错提示Anunknownserver-sideerroroccurredwhileprocessingthecommand.Originalerror:Couldnotfindaconn......
  • while和for、内置方法
     当while没有被关键字break主动结束的情况下  正常结束循环体代码之后会执行else的子代码while条件: 循环体代码else: 循环体代码正常运行结束则会执行该子代码块count=1whilecount<10:print(count)count+=1#打印0......
  • Python - 函数声明中的 : 和 -> 符号的含义
     函数注释包括:: 标记给函数参数打注释的意思。-> 标记给函数返回值打注释的意思。 例子:#代码:defdd(w:list)->int:returnw[0]+w[1]#调用:dd([1,2])#输出:3 解释:: 表示参数w应该传入list类型的值,但只是注释(在你的代码里,你传入其他的类型,只要代码......
  • VS中scanf()函数错误C4996的原因及解决办法
    实例:报错原因:这是因为在您的代码中使用了不安全的函数scanf。scanf函数可以读取用户输入的数据,但它无法检查输入数据是否符合要求,可能会导致缓冲区溢出等安全问题,简单来说就是输入字节的长度可能会超过接受变量的长度。解决方案:(1)使用scanf_s函数代替scanf函数。scanf_s函数与scanf......
  • Python正则表达式常用flag含义与用法详解
    Python正则表达式模块re中很多函数都支持一个flag参数,用来对正则表达式进行补充说明,例如findall(pattern,string,flags=0)match(pattern,string,flags=0)search(pattern,string,flags=0)sub(pattern,repl,string,count=0,flags=0)split(pattern,string,maxsplit=0,fla......