So sánh số có dấu và số không dấu

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 ạ???

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é :smiley:

https://wiki.sei.cmu.edu/confluence/display/c/INT02-C.+Understand+integer+conversion+rules

size_t chắc chắn là không dấu nên -1 > 1TRUE.

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 :slight_smile: 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?