Trong C ++, sự khác biệt giữa "sử dụng ll = long long" và "typedef long long ll" là gì?


Câu trả lời 1:

Đầu tiên là một bí danh loại và thứ hai là một định nghĩa loại.

Một bí danh kiểu chỉ đơn giản là thay thế kiểu vào phần biên dịch nguồn.

Một typedef nhập loại vào từ vựng của các loại đã biết.

Một typedef có thể tạo các kiểu, trong khi mệnh đề sử dụng chỉ tạo ra một bí danh cho một kiểu đã biết.

Trong ví dụ của bạn, đó là một sự khác biệt không có sự khác biệt, nhưng có thể không dịch dễ dàng cho các loại liên quan như con trỏ, tham chiếu, v.v.

Tôi sẽ khuyên bạn không nên sử dụng một bí danh hoặc typedef như vậy vì nó rất không có nhiều thông tin và có nhiều sự chấp nhận được xung quanh các lựa chọn thay thế như

int64_t
uint32_t

[| u] intN_t

than

int

Phao nổi

bạn có được những thứ này và tất cả các hằng số MAX và MIN bằng cách bao gồm cstdint.

#inc loại 

(stdint.h)


Câu trả lời 2:

Không có sự khác biệt nào về ý nghĩa. Tiêu chuẩn ([dcl.typedef]) nói:

Một tên typedef cũng có thể được giới thiệu bằng một khai báo bí danh. Mã định danh theo sau từ khóa đang sử dụng trở thành tên typedef và thuộc tính-specifier-seq tùy chọn theo sau định danh xác định với tên typedef đó. Nó có cùng ngữ nghĩa như thể nó được giới thiệu bởi công cụ xác định typedef.

Khai báo sử dụng ll = long long; là một tuyên bố bí danh.