先上码

#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. mysql数据库,删除root用户后恢复
  2. Python+Selenium练习篇之11-浏览器上前进和后退操作
  3. Microsoft-Office-Professional-Plus-2007
  4. vn.py 2.0.1 发布,全功能交易程序开发框架
  5. 2021年度邵逸夫数学科学奖
  6. 带桭字的名字_男孩带官运大气的名字有气魄有能力-可爱点
  7. SpringCloud Hoxton版微服务- Gateway网关
  8. ACT的摘要可以告诉我们的内容
  9. php rand js,js中的php rand函数
  10. SD卡无法格式化怎么办?恢复SD卡这样做
  11. cad打印本计算机未配置,为什么CAD点打印的时候会警告无法使用此绘图仪配置?...
  12. C语言自学完备手册(02)——变量的声明与定义
  13. 多元逻辑回归与多元回归区别_避免被跟踪浏览多元宇宙
  14. 用Vue做一个音乐app
  15. 中国人民大学与加拿大女王大学金融硕士——在这里,打开精彩“识界”
  16. 安装oracle的时候ORA12705,解决ORA-12705无法访问NLS问题
  17. 随便写的一篇,记录我的hyperledger -ca折腾
  18. 微信小程序云开发之cms开发
  19. RS485自收发实现方案,典型应用电路及问题经验总结
  20. RabbitMQ 从入门到精通 消息应答 持久化 交换机 队列 发布确认 集群 等

热门文章

  1. @深度学习硬件选择与配置(避坑与指南)
  2. 《白蛇·缘起》观后感
  3. GPT-4来了,业财税融的Copilot还会远么?| 2023百望云数字商业创新峰会上海站分享
  4. 手机闪存速度排行_华为Mate40Pro和小米11闪存哪个强-闪存读写速度对比解析
  5. python基础练习(100)--练习题
  6. 镇江网络SEO:如何让百度收录网站,提高竞争力?
  7. jquery 给金额加逗号分隔并保留小数
  8. google html5 摄像头,chrome html5如何调用摄像头?
  9. AJAX局部刷新功能实现
  10. OWIN - Open Web Interface for .NET