30/09/2018, 19:02

Một đố vui nhỏ về C/C++

Như mọi người biết là trong C/C++ có kiểu INT. Một kiểu thay đổi giá trị theo số bit của CPU. (16bit thì 2bytes, 32bit thì 4bytes,…)
Vậy đố mọi người #define INT_MAX sao cho phù hợp với mọi CPU với kết quả luôn đúng
(Như CPU 16bit thì trả về ~32k, 32bit thì ~2 tỷ )

... viết 21:08 ngày 30/09/2018

Triệu hồi @ltd …

Gió viết 21:17 ngày 30/09/2018

Có thể dùng sizeof để dùng hoặc thông qua dữ liệu khác
#define UINT_MAX ((unsigned int)(~0))
#define INT_MAX ((int)UINT_MAX>>1)

Văn Dương viết 21:09 ngày 30/09/2018

Sizeof(int) được không nhể. Trong C vẫn làm vậy.

*grab popcorn* viết 21:12 ngày 30/09/2018

Của gió là đúng rồi :))
Hoặc không thì chỉ cần ghi 1 dòng

#define INT_MAX (int)(~0U>>1)

‘3’ Vẫn chờ các cách khác.

Bài liên quan
0