C-将变量与sizeof(int)进行比较
因此,最近我看到一段C代码如下:C-将变量与sizeof(int)进行比较,c,pipe,C,Pipe,因此,最近我看到一段C代码如下: int result, input; result = read(fd, (char*)&input, sizeof(input)); if(result == sizeof(int)) return input; 比较result==sizeof(int)有什么作用?read返回读取的字节数(或-1出错)。代码试图从流中读取int,并确保read工作正常。read返回读取的字节数 在某些情况下(文件结束、磁盘错误、管道破裂),read返回的值可
int result, input;
result = read(fd, (char*)&input, sizeof(input));
if(result == sizeof(int)) return input;
比较
result==sizeof(int)
有什么作用?read
返回读取的字节数(或-1
出错)。代码试图从流中读取int
,并确保read
工作正常。read
返回读取的字节数
在某些情况下(文件结束、磁盘错误、管道破裂),read
返回的值可能小于调用中请求的整数的大小,或者-1
表示错误
这只是一个健全的检查,以确保输入的完整性
就我个人而言,我更愿意针对sizeof(input)
进行测试,因为如果input
的类型更改为short
或double
,那么代码会错误地检测到读取大小问题。这使问题更清楚
int readLength;
int readData; // or long, float, ...
readLength = read(fd, (char*)&readData, sizeof(readData));
if(readLength == sizeof(readData)) // Do something
由于重复使用了
result
,仅检查result
是否已被完全读取,因此原始代码被破坏。这就是全部检查答案。当然,显示的代码是疯狂的,因为它用read覆盖了它刚刚读取的内容length@mreff555:如果C编译器知道什么是std:iostream
,我会感到惊讶。它检查result
和sizeof(int)
是否具有相同的值。。。就像1+1==2
检查1+1
和2
是否具有相同的值。这就是为什么read可能返回多个正值。。。谢谢,这很有帮助。