C - 将变量与sizeof(int)进行比较

时间:2018-03-06 19:48:49

标签: c pipe

所以,最近我看到了一段C代码如下:

int result, input;


result = read(fd, (char*)&input, sizeof(input));

if(result == sizeof(int)) return input;

比较result == sizeof(int)做了什么?

3 个答案:

答案 0 :(得分:3)

read返回读取的字节数(或出错时为-1)。代码尝试从流中读取int,并确保read正常工作。

答案 1 :(得分:2)

read返回读取的字节数。

在某些情况下(文件结束,磁盘错误,管道损坏),read的返回值可能小于调用中请求的整数的大小,或-1表示错误。

这只是一项健全性检查,以确保input

的完整性

就我个人而言,我更愿意针对sizeof(input)进行测试,因为如果inputshort的{​​{1}}类型发生更改,则代码会错误地检测到读取大小问题

答案 2 :(得分:0)

这使它更清晰

int readLength;
int readData; // or long, float, ...

readLength = read(fd, (char*)&readData, sizeof(readData));

if(readLength == sizeof(readData)) // Do something

原始代码因重用result

而被破坏