Vòng for với cin.fail() bị lặp vô hạn

#include <iostream>
using namespace std;

int main() {
	float n;
	cin>>n;
	for ( ;!!cin.fail() || !!(n-(int)n) || n < 0; ) {
		cout<<"Vui long nhap so nguyen khong am!"<<endl;
		cin>>n;
	}
	return 0;
}

Các bạn xem giúp mình khi mình nhập ký tự là chữ thì !!cin.fail() trả về true thì sẽ chạy vào vòng lặp for nhưng nó chạy vô hạn không chạy lệnh cin>>n để mình nhập. Thank all!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?