~scanf是什么意思,为什么scanf前加~

为什么老是要证明我是我
浏览 4948回答 5
5回答

onemoo

前面 望远 的回答说明的是这个代码的意图。我想提醒下:这样用取反 ~ 运算符来判断是否为 EOF 的方法是不合适的!很多人认为 EOF 的值是 -1,在很多平台上这个值也确实是 -1。但是,C 标准实际上只是规定 EOF 值为负 int 值!并没有说它一定是 -1!!所以,有可能在某些平台上 EOF 值并非 -1,这样这个方法就无法判断是否读取到 EOF 了。C 标准定义了一个宏 EOF 来表示 End Of File。所以推荐且安全的做法是用 EOF 来作比较:scanf("%d %d",&a,&b) == EOF

望远

scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。 scanf("%d %d",&a,&b);     函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2; 如果只有a被成功读入,返回值为1; 如果a和b都未被成功读入,返回值为0; 如果遇到错误或遇到end of file,返回值为EOF。end of file为Ctrl+z 或者Ctrl+d。 其中EOF的值为-1也就是说scanf返回值的取值范围是大于等于-1的整数只有返回值为EOF时 其取反的的值 即while循环的判断条件才为0 才能结束循环 (-1的补码表示全是1,按位取反后全是0,即为假)其它输入情况下(无论是否输入成功) while循环的判断条件为非0 即为真

慕的地8582982

CPPPDEEEEWWPCDSSMMMMZMYYKDEEESEFEJIUUTGUVMLXDQQDCPTTSGGRFEEQQEKJWXAMNZNNZNZMQLKOBNBBPBANKJVANNZNZMMPOBONFSFRDDYKWWXJJWWVIDQQDCCOOANNXWIIBANNMZMDQCPBBBTGGFKOAANMZZYLMGGSSFSEWWWIDDPIIIVIHHHZZQQPCQCPPPVUGTTSFTSSXCCOONANAZEEJIUHTGTSSXWKJVYXKLXXKXKJBBOANANZZNZLYQDYKKKWHGTTUGFSRSSSRRSRFSSFFRQCCBBAZZMDQOGFTSSSTGFSDQCDCQDRRIVSMLKXWJXKXXMZLYLYYXXXJMYKRRFERDDDJXIVINLZZZMJNOOOBAAZNNIHTGFSFFEEEDCTTHHUHHUTNMLLXXKJJWACBANBNZZDQDYXBBCBBNANMRFQFEERDDDCJVHTTFSSXWJYLXKWBBBANZWJVUUAOAAAMZZYZZZZNMZRKXWWXKWJJBBLYYYKWWIIUHASRSFTFSEERUYKYXKWJIVITSEEDQDPHHTREEEDDHGGGSGTSFSSGXKXXYKXYCDDPPCORQDQQQDVVHHHHHHHTTTSFFOBNMZZZMMZYLYZZLYKXWWJHUGLKXJWVVIEDPBBNBPBDCMQQCCDDDDCCEMLXJZEKRQGIBWPKTZOWZWYXCLKDJYUABKCJPKKFXKGVAGUGZCEWSONIWQTNNWYUHWZHURUPPFWFEOGYIDWGFBDSTAZBSATTSVQIRPYBAYDMVRASEBHJIRNXCDLODGMXWLEUDVWYKTSMKJOZISVUDFMKAHELSEAPUHKGPKPXKRZEUTMWPIXPLETZRDBLAPINDGCYEGCUQZOHTFKDSNLKDMZYYNPDTYAMPUWBGZO

Yellow2dong

贴代码

xungeer29

看看检测文件尾的内容EOF

闹闹的女朋友

不懂你的意思
打开App,查看更多内容
随时随地看视频慕课网APP