写程序时,出现了bug,找了半天,定位到了这儿语句:
while(read=fread(buffer,1,1024,tempfile)!=0)
{
...
...
}
调试后发现这里的read老是等于1,即使文件中还有很多字节可读。
仔细分析了一下,发现是因为忽略了运算符的优先级造成的。
在这里,赋值运算符=的优先级要小于关系运算符!=,因此,这里是吧逻辑判断fread(buffer,1,1024,tempfile)!=0的结果赋给read,因此read等于1 。
在C语言中,运算符的优先级顺序为(按从高到低排):
!(非)
算术运算符
关系运算符
&&和||
赋值运算符