先上码

#include <bits/stdc++.h>
using namespace std;int main() {char ch = 0;while(~scanf("%c", &ch)) //此位置分析
{getchar();//读入回车符if((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))printf("YES\n");elseprintf("NO\n");}return 0;
}

今天遇到这样一段代码段

    while(~scanf("%c", &ch)) //此位置分析

提出问题:

输入字符a的时候会结束while循环吗?

我们和计算机交流一下,
计算机:我的scanf在接收到a之后,返回1。

我:那你~1之后是0

计算机:你小子在开玩笑

我:不对吗?

计算机:二进制取反

我:你1,1的16进制储存为0x00000001?

计算器:对的,那我取反是多少?

我:0xfffffffe?

计算机:对了。

我:那如何让你~一个数之后变为0?

计算机:你试试-1

我:~(-1)之后是0了,莫非你-116进制是0xffffffff?

机器:对的

好,从刚才和机器的对话中我们了解到了,

1.~是以二进制取反来操作的,1中的二进制不是0xffffffff储存的,所以~1不等于0!

2.-1采用的是补码。

    while(~scanf("%c", &ch)) //此位置分析

那么就可以理解这句话的意思了。

当scanf("%c", &ch)返回-1的时候结束,

scanf("%c", &ch)在==EOF的时候返回-1。

其他:

1.scanf函数的返回值

1.1例scanf("%d",&c1);//返回值为1

1.2例scanf("%d%d",&c1,&c2);//返回值为2

.....

//依次类推//返回值为n

1.other1 scanf 在什么情况下会输出0?

scanf输入错误的时候。

例子:

int a;
scanf("%d",&a);//你给他赋值a字符,scanf未输入,返回值为0

1.other2 scanf 什么时候输出-1?

文件末尾的时候,==EOF的时候,具体,在输入框中 CTRL+Z, 在ENTER键

C语言~取反关键字//~1不是0相关推荐

  1. C语言----取反~

    一.正数 (1)执行~0001后 为1110(内存中就是这样存储0001取反的结果的) 这个结果是以补码的方式存储的 但是真真的显示的时候往往用原码,就是1010了<最高位为符号位,这里为1,就 ...

  2. C语言 ~ 取反操作

    由于负数的原码,补码,反码不同 在使⽤~计算负数时,由于在计算机中,负数的补码,反码,原码不同,因此⾸先将操作数的值计算为补码,再进⾏取反运算 反码->补码->取反 正数(正数的补码,反码 ...

  3. c51单片机c语言取反运算符,单片机c语言教程:C51运算符和表达式

    在制作电路前我们先来看看要用的 MAX232,这里不去具体讨论它,只要知道它是 TTL和 RS232 电平相互转换的芯片和基本的引脚接线功能就行了.通常我会用两个小功率晶体管加少量的电路去替换MAX2 ...

  4. C语言位运算符:与、或、异或、取反、左移和右移

    C语言位运算符主要包括六种:与( & ).或( | ).异或( ^ ).取反( ~ ).左移( >> )和右移( << ) 运算符 含义 描述 & 按位与 如果 ...

  5. 计算机的取反(~)操作解释

    我们都知道取反~操作是将二进制0和1互换,但是计算时容易出错,这是由于计算机中数值是以二进制补码形式存储的. 补码:正数的补码和原码相同:负数的补码为符号位不变,剩余位取反再加1. 一定要时刻记住补码 ...

  6. Python——~取反操作

    ~取反操作 >>>~1 -2 >>>~-1 0 ~:求补码,即将原数(十进制)取相反数再减一.

  7. Verilog逻辑取反与按位取反

    Verilog中逻辑取反(取非)用 !,按位取反用~. 取非 ! 表示运算结果只有0(假)与1(真)两种情况: 取反~表示二进制数按位取反. 例如对in=1101分别进行逻辑取反与按位取反: assi ...

  8. 【STM32】位操作、按位与、按位或、按位异或、取反、左移、右移等基础 C 语言知识补充

    文章目录 1 位操作 1.1 按位与 1.2 按位或 1.3 按位异或 1.4 取反 1.5 左移 1.6 右移 2 单片机中常用操作 2.1 不改变其他位时,对某几个位设定值 2.2 移位操作提高代 ...

  9. C语言优先级——取反和移位

    遇到一个面试题: unsigned char a=0xA5; unsigned char b=~a>>4; 结果是245,提示的是先提升类型然后移位,然后取反,然后截断. 但是单目运算符的 ...

最新文章

  1. 整理了一些t-sql技巧
  2. iOS常用宏定义大全
  3. 荷兰国旗 Flag of the Kingdom of the Netherlands
  4. 【C语言】while后接分号“ ;”的用法
  5. linux修改mysql配置文件_Linux下PHP开发环境搭建(Apache2.4+PHP7.1+MySQL5.7)
  6. 无法定位程序输入点 _ZdaPvj 于动态链接库 libstdc++-6.dll
  7. SAP UI5 extension component loads standard component
  8. 在Docker中运行asp.net core 跨平台应用程序
  9. 远程桌面 Web 连接
  10. 李迟2022年2月知识总结
  11. 阶段1 语言基础+高级_1-2 -面向对象和封装_11使用对象类型作为方法的返回值
  12. docker安装mysql主从视频教程_docker安装mysql主从
  13. AI 芯片崛起!FPGA 工程师的核心竞争力在哪里?
  14. Dijstra--讲解
  15. Python-split()函数的使用
  16. win10等系统安装Pads安装步骤及软件卡死问题解决
  17. RDPWrap,win10家庭版最新配置文件支持termsrv10.0.18362.836
  18. 移动办公系统现状分析
  19. 开关稳压器详解(四)-Buck降压型开关稳压器自举电路
  20. 做了个网页版的 五笔跟打器: 玫枫跟打器

热门文章

  1. 孙鑫VC++深入详解:Lesson6 Part3 ---创建右键弹出菜单 TrackPopupMenu
  2. VsCode中编译Python flake8忽略警告E403
  3. 2021年熔化焊接与热切割新版试题及熔化焊接与热切割作业考试题库
  4. excel在线_Excel太难搞?有了它帮你自动生成,制作高大上图表,用过都说好
  5. 人像摄影姿势入门(二):半身照
  6. 关于Eclipse中突然冒出一个configure build path的提示
  7. 爬取知乎高赞情话,甜蜜过七夕
  8. Tech Ed游记(一)
  9. JS 验证码倒计时效果
  10. mui 长按复制内容多处复用