!与~

[复制链接]
 楼主| 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,!后是什么?
llljh 发表于 2011-8-29 19:03 | 显示全部楼层
!是逻辑运算符。
~ 是位运算符。
chuxh 发表于 2011-8-29 19:09 | 显示全部楼层
一个是非 ,一个取反
司徒老鹰 发表于 2011-8-29 19:13 | 显示全部楼层
个人认为while(!(inkey=getno(line)));
并不见得比 while(0 == (inkey = getno(line)));好
 楼主| zwll 发表于 2011-8-29 19:16 | 显示全部楼层
这样理解:

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

对吗?
dingy 发表于 2011-8-29 19:24 | 显示全部楼层
!是逻辑运算符。结果是布尔量(真或假);
~ 是位运算符。结果还是维持是原来的类型。
llljh 发表于 2011-8-29 19:29 | 显示全部楼层
~ 似乎 int 的位运算符。结果是int 类型。

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

但如果忽略这个,有时会出错。
renyaq 发表于 2011-8-29 19:33 | 显示全部楼层
~对int操作后是int,对char 操作后是 char。
 楼主| zwll 发表于 2011-8-29 19:39 | 显示全部楼层
经过亲自在开发板上实验,得出的结果是
当inkey为00H时,!后为FFH;
当inkey为非0时,!后为00H。
 楼主| zwll 发表于 2011-8-29 19:43 | 显示全部楼层
虽然while(表达式),表达式只在乎真和假,即布尔量(1位),!本身对字节运算还是有结果的
llljh 发表于 2011-8-29 20:27 | 显示全部楼层
你的理解很正确
 楼主| zwll 发表于 2011-8-29 20:30 | 显示全部楼层
多谢,这下彻底明白了
 楼主| zwll 发表于 2011-8-29 20:33 | 显示全部楼层
结贴了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

885

主题

11314

帖子

5

粉丝