为什么注释掉下面代码中的赋值操作,read读出的是随机数。
如果没有注释掉,read函数正常从data.txt读出一个整型数据到cnt中?
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<fcntl.h>
int main()
{
int cnt;
int fd;
fd = open("data.txt", O_RDONLY);
//cnt = 0;
read(fd, &cnt, 1);
printf("%d", cnt);
close(fd);
return 0;
}
你这只是读取一个字节吧。cnt是个整型,占四个字节,如果不初始化,那么每个字节都是垃圾值。read函数本身没问题,能够改变cnt的第一个字节数据,但由于其它字节还是垃圾数据,所以最后输出的cnt感觉是个随机值。
如果增加cnt=0的初始化,实际上是cnt整型的四个字节都初始化为0了,这时候你读取一个字节到cnt的第一个字节,由于整型低字节在前,高字节在后,所以整型值和第一个字节值是一样的。最后输出结果显得是正确读取了。