一个被人忽视的条件语句: 逻辑取反 "!"
刚开始,我把它误作为"不等于 != "条件语句,随后我查了二本书,它们是这样叙述的:中文书:!逻辑取反 ---- 对变量取反或对表达式的结果取反
英文书: ! express ---- Returns true when express is false
显然前者解释得更具体,更精准。下面我举个例子来看一下,这条件语句是怎样被巧妙运用的,这对程序员是非常有用的。
这是程序中的一段,它是用来阅读文件的:
;循环读出文件并处理每个字节
;********************************************************************
..............
xor eax,eax
mov @dwBytesRead,eax
.while TRUE
lea esi,@szReadBuffer
invoke ReadFile,@hFile,esi,sizeof @szReadBuffer,addr @dwBytesRead,0
.break .if ! @dwBytesRead ;!- 逻辑取反 0>>1,1>>0
invoke _FormatText,esi,@dwBytesRead,@hFileNew
.endw
.................
用while语句来循环阅读文件,当阅读完文件后,@dwBytesRead为0, 取反后为1, 跳出循环,另外,当@dwBytesRead
不为0时,设置为0, 这是reafIle()的前置要求,所以只有用这语句才能更好地实现。如果谁能更详细更准确地解读这语句,请让我们分享一下。