while ( scanf ("%d" , &data) != EOF )
{
……
}
等价于:
while (~scanf (“%%d" , &data) )
{
……
}
理由:
因为 EOF 的值为 —1
即二进制形式为:1111111111111111111111111111111
所以按位取反后 32 个bit位均为 0
而且 0 在代表假,所以会退出循环
while ( scanf ("%d" , &data) != EOF )
{
……
}
等价于:
while (~scanf (“%%d" , &data) )
{
……
}
理由:
因为 EOF 的值为 —1
即二进制形式为:1111111111111111111111111111111
所以按位取反后 32 个bit位均为 0
而且 0 在代表假,所以会退出循环