所以,最近我看到了一段C代码如下:
int result, input;
result = read(fd, (char*)&input, sizeof(input));
if(result == sizeof(int)) return input;
比较result == sizeof(int)
做了什么?
答案 0 :(得分:3)
read
返回读取的字节数(或出错时为-1
)。代码尝试从流中读取int
,并确保read
正常工作。
答案 1 :(得分:2)
read
返回读取的字节数。
在某些情况下(文件结束,磁盘错误,管道损坏),read
的返回值可能小于调用中请求的整数的大小,或-1
表示错误。
这只是一项健全性检查,以确保input
就我个人而言,我更愿意针对sizeof(input)
进行测试,因为如果input
或short
的{{1}}类型发生更改,则代码会错误地检测到读取大小问题
答案 2 :(得分:0)
这使它更清晰
int readLength;
int readData; // or long, float, ...
readLength = read(fd, (char*)&readData, sizeof(readData));
if(readLength == sizeof(readData)) // Do something
原始代码因重用result