INT8_MIN
có thể định nghĩa là (char) -128
mà cout
với char
thì lại in ra kí tự luôn chứ ko in ra code (tức là con số).
Sử dụng thư viện cstdint
Cái UINT8_MAX là 256 có thuộc bảng mã ASCII đâu bạn, mã tới 127 thôi. Mình vẫn chưa hiểu cái này.
nó có thuộc cái extended ascii đây :V
ban đầu ASCII chỉ có 7-bit, nhưng kiểu char có 8-bit, thành ra dư 128 giá trị :V Dần dà người ta tìm cách sử dụng luôn 128 giá trị dư ra này, nhưng mỗi nước lại gán 128 giá trị đó cho 1 ký tự khác nhau :V :V :V Chỉ có 7-bit đầu tiên (giá trị 0-127) là có chuẩn, còn 128 giá trị thêm vào thì ko có quy chuẩn nào hết, mỗi nước mỗi khác :V Ví dụ cái hình trong wiki thì giá trị 255 lại là ÿ
, còn cái hình của trang asciitable.com lại là khoảng trắng (no-break space, alt code là alt+255 :V)
edit: code page hiện tại của em chắc đang là 437 :V em thử chạy chcp 1252
rồi chạy lại chương trình của em sẽ thấy nó hiện UINT8_MAX là ÿ
:V
edit: em muốn in ra giá trị thì cast nó về int: (int)INT8_MAX
và (int)UINT8_MAX
edit: lỗi chắc là ở ông MSVC :V Đa số người ta define INT8_MAX là 127 hoặc 0x7f, UINT8_MAX là 255 hoặc 0xff, còn ông MSVC thì đi gán là 127i8
và 0xffui8
@_@ nên mới bị cast về char
và unsigned char
như thế kia, mấy trình dịch khác như mingw toàn in ra số :V
sao lại đặt kiểu dữ liệu biến chi tiết đến vậy ad ơi , em chỉ dùng mỗi int , double, long , float thấy cũng chả có vấn đề gì
Vì dùng kiểu này không cần biết long
là mấy byte cứ thế mà dịch
Thật ra kích thước các kiểu nguyên không giống nhau giữa các trình biên dịch, ban đầu không muốn siết lại để chương trình phù hợp với một kiến trúc cụ thể.
cảm ơn nhé ,
uint8_t
tức là char
mà ép sang unsigned int
thôi. (vì unsigned int
chắc chắn tồn tại)
Em chào anh chị.
Anh chị có thể giải thích cho em sao mình phải gán min_value = MAX và max_value = MIN vậy ạ .
Em đọc hoài mà vẫn không hiểu .
Em cảm ơn mọi người.
Để đảm bảo lấy được đúng giá trị nhỏ nhất và lớn nhất.
dạ em vẫn không hiểu tại sao phải vậy
Hãy suy nghĩ ngược lại, vậy theo bạn thì nên khởi tạo giá trị nào cho min_value
và max_value
? Hay là không gán gì cả (vậy thì min_value
, max_value
là bao nhiêu?)? Rồi lấy 1 vài ví dụ cụ thể để xem có gì xảy ra không?
Spoiler
Đọc kỹ là thấy có giải thích sẵn trong bài gốc rồi…
Em hiểu rồi. Em cảm ơn ạ