打印

!与~的巧用,但不大懂

[复制链接]
1835|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
江陵龙少|  楼主 | 2010-5-10 18:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看语句:

while(!(inkey=getno(line)));
语句1;
语句2;
...
上面语句中,inkey是unsigned char型,语句的意思是,通过调用函数getno()获得键值,
我想问的是,在这里!对字节进行操作是什么结果,与~有什么区别?例如若inkey为00H,!后是什么?如为FFH,!后是什么?

相关帖子

沙发
znmcu| | 2010-5-10 19:17 | 只看该作者
!是逻辑运算符。
~ 是位运算符。  仅赠予你这两句话,自已理解吧

使用特权

评论回复
板凳
lovewwy| | 2010-5-10 20:06 | 只看该作者
正如沙发所说,一个是非 ,一个取反

使用特权

评论回复
地板
hgjinwei| | 2010-5-10 20:13 | 只看该作者
个人认为while(!(inkey=getno(line)));
并不见得比 while(0 == (inkey = getno(line)));好

使用特权

评论回复
5
江陵龙少|  楼主 | 2010-5-10 20:25 | 只看该作者
根据上大侠的提示,分析一下:
!为逻辑运算符,运算结果,无非真和假,即非0和0,inkey为00H时,取非为真,inkey为非0时,取非为假,
多谢高手提点

使用特权

评论回复
6
lovewwy| | 2010-5-10 21:49 | 只看该作者
个人认为while(!(inkey=getno(line)));
并不见得比 while(0 == (inkey = getno(line)));好
hgjinwei 发表于 2010-5-10 20:13

我也同意。

使用特权

评论回复
7
麻辣鸭脖子| | 2010-5-10 23:12 | 只看该作者
这个简单明白

使用特权

评论回复
8
程序匠人| | 2010-5-10 23:40 | 只看该作者
!是逻辑运算符。结果是布尔量(真或假);
~ 是位运算符。结果还是维持是原来的类型。

使用特权

评论回复
9
呆板书生| | 2010-5-11 10:26 | 只看该作者
8楼似乎有误,

~ 似乎 int 的位运算符。结果是int 类型。

不过在很多应用环境里,会隐型转换为 char

但如果忽略这个,有时会出错。

使用特权

评论回复
10
linqing171| | 2010-5-11 12:45 | 只看该作者
9# 呆板书生
~对int操作后是int,对char 操作后是 char。

使用特权

评论回复
11
求知的电工| | 2010-5-11 13:32 | 只看该作者
来理解一下。。

使用特权

评论回复
12
江陵龙少|  楼主 | 2010-5-11 21:34 | 只看该作者
本帖最后由 江陵龙少 于 2010-5-11 21:35 编辑

经过亲自在开发板上实验,得出的结果是
当inkey为00H时,!后为FFH;
当inkey为非0时,!后为00H。

虽然while(表达式),表达式只在乎真和假,即布尔量(1位),!本身对字节运算还是有结果的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

279

帖子

2

粉丝