Sử dụng thư viện cstdint

INT8_MIN có thể định nghĩa là (char) -128 :smiley:cout với char thì lại in ra kí tự luôn chứ ko in ra code (tức là con số).

4 Likes

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.

http://www.asciitable.com/
extend

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(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à 127i80xffui8 @_@ nên mới bị cast về charunsigned char như thế kia, mấy trình dịch khác như mingw toàn in ra số :V

3 Likes

A post was split to a new topic: Cài đặt C++99 hoặc C++11 mode ở VS Code

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

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ể.

4 Likes

cảm ơn nhé ,

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