打印

!与~

[复制链接]
1595|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zwll|  楼主 | 2011-8-29 18:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
while(!(inkey=getno(line)));
语句1;
语句2;
...
上面语句中,inkey是unsigned char型,语句的意思是,通过调用函数getno()获得键值,在这里!对字节进行操作是什么结果,与~有什么区别?
沙发
司徒老鹰| | 2011-8-29 18:49 | 只看该作者
看不懂你问的是啥

使用特权

评论回复
板凳
zwll|  楼主 | 2011-8-29 18:53 | 只看该作者
例如若inkey为00H,!后是什么?

使用特权

评论回复
地板
zwll|  楼主 | 2011-8-29 18:59 | 只看该作者
如为FFH,!后是什么?

使用特权

评论回复
5
llljh| | 2011-8-29 19:03 | 只看该作者
!是逻辑运算符。
~ 是位运算符。

使用特权

评论回复
6
chuxh| | 2011-8-29 19:09 | 只看该作者
一个是非 ,一个取反

使用特权

评论回复
7
司徒老鹰| | 2011-8-29 19:13 | 只看该作者
个人认为while(!(inkey=getno(line)));
并不见得比 while(0 == (inkey = getno(line)));好

使用特权

评论回复
8
zwll|  楼主 | 2011-8-29 19:16 | 只看该作者
这样理解:

!为逻辑运算符,运算结果,无非真和假,即非0和0,inkey为00H时,取非为真,inkey为非0时,取非为假,

对吗?

使用特权

评论回复
9
dingy| | 2011-8-29 19:24 | 只看该作者
!是逻辑运算符。结果是布尔量(真或假);
~ 是位运算符。结果还是维持是原来的类型。

使用特权

评论回复
10
llljh| | 2011-8-29 19:29 | 只看该作者
~ 似乎 int 的位运算符。结果是int 类型。

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

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

使用特权

评论回复
11
renyaq| | 2011-8-29 19:33 | 只看该作者
~对int操作后是int,对char 操作后是 char。

使用特权

评论回复
12
zwll|  楼主 | 2011-8-29 19:39 | 只看该作者
经过亲自在开发板上实验,得出的结果是
当inkey为00H时,!后为FFH;
当inkey为非0时,!后为00H。

使用特权

评论回复
13
zwll|  楼主 | 2011-8-29 19:43 | 只看该作者
虽然while(表达式),表达式只在乎真和假,即布尔量(1位),!本身对字节运算还是有结果的

使用特权

评论回复
14
llljh| | 2011-8-29 20:27 | 只看该作者
你的理解很正确

使用特权

评论回复
15
zwll|  楼主 | 2011-8-29 20:30 | 只看该作者
多谢,这下彻底明白了

使用特权

评论回复
16
zwll|  楼主 | 2011-8-29 20:33 | 只看该作者
结贴了

使用特权

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

本版积分规则

885

主题

11314

帖子

5

粉丝