c if(数值) 做判断
1.今天看到一个函数
/**
* @brief MainWindow::comWatchPort
* @return
* 串口的检查 清除错误信息,输入缓冲区中的字节数
*/
int MainWindow::comWatchPort()
{
int i;
//ClearCommError函数的
//第一个参数hFile是由CreateFile函数返回指向已打开串行口的句柄。
//第二个参数指向定义了错误类型的32位变量。
//第三个参数指向一个返回设备状态的控制块COMSTAT。如果函数调用成功,则返回值为非0;若函数调用失败,则返回值为0
if(!isComOpen)
return 0;
ClearCommError(idComDev,&dwErrorFlag,&state);
//cbInQue 在输入缓冲区尚未被ReadFile函数读取的数据字节数。这个参数经常被用来进行状态检查。
i = state.cbInQue;
return i;
}
在另外一边的调用:
int i;
i = comWatchPort();
if(i){
......
}
这边的返回值要么是0 没有数据,要么是多少个字节,结果在调用时,直接if(结果),很是纳闷,后来才知道,原来是 非0 即为true 0=false;