for(int i=0;i<total && scanf("%d",&buf[i])>0;i++)
;
注意这样的写法是正确的,但是
for(int i=0;scanf("%d",&buf[i])>0 && i<total;i++)
;像这样将读入和下标判断反过来就会出错,会造成多读入一个数据。
因为&&运算符的原因,先计算i<total就可直接判断该语句为假,不用再执行一次读入指令。
for(int i=0;i<total && scanf("%d",&buf[i])>0;i++)
;
注意这样的写法是正确的,但是
for(int i=0;scanf("%d",&buf[i])>0 && i<total;i++)
;像这样将读入和下标判断反过来就会出错,会造成多读入一个数据。
因为&&运算符的原因,先计算i<total就可直接判断该语句为假,不用再执行一次读入指令。