Cho mình hỏi tại sao khi so sánh số -1 và sô 1 trong C++, kết quả lại cho ra số -1 lớn hơn vậy ạ???
So sánh số có dấu và số không dấu
Kết quả vẫn ra đúng mà bạn?
Bạn chạy thử code này nè:
string s="A";
if (s.length()<-1) cout<<"-1 > 1";
else cout<<"-1<=1";
Nếu mình đúng thì 1 thằng size_t, 1 thằng int nên không so sánh được với nhau
Bạn cast thằng s.length() về kiểu int rồi so sánh thử
Mình nghĩ là nó liên quan đến so sánh bit
Lần sau bạn post đoạn code đang thắc mắc ngay từ đầu nhé 
https://wiki.sei.cmu.edu/confluence/display/c/INT02-C.+Understand+integer+conversion+rules
Mà size_t chắc chắn là không dấu nên -1 > 1 là TRUE.
1 Like
Mình xin lỗi, mình sẽ rút kinh nghiệm ở lần sau. Nhưng cho mình hỏi lại điều đó có nghĩa là -1 -> (unsigned int) 4294967294 > 1 đúng không
x86 thì đổi -1 về 4294967295 bạn
vì -1 viết là 32 bit 1 trong hệ bù 2.
1 Like
Sorry bạn mình nhầm lẫn tí.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?