CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
Bài blog CFSDN này nói chi tiết về các từ khóa đã ký được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.
Chúng ta đều biết và thường xuyên sử dụng từ khóa unsigned, nhưng bạn đã bao giờ nghĩ đến việc sử dụng từ khóa signature tương ứng chưa?
。
Sao chép mã Mã này như sau:
số nguyên i = 0;
số nguyên có dấu i = 0;
。
Có sự khác biệt nào giữa hai điều này không? Không có sự khác biệt. Có vẻ như việc ký kết là hoàn toàn cồng kềnh.
Đây thực sự là trường hợp?
Tôi đã kiểm tra tài liệu chuẩn C++ 11 (bản nháp N3690) và tìm thấy một số manh mối:
3.9.1 Các kiểu cơ bản 。
。
Sao chép mã Mã này như sau:
Các đối tượng được khai báo là characters(char) phải đủ lớn để lưu trữ bất kỳ thành viên nào của bộ ký tự cơ bản của triển khai. Nếu một ký tự từ bộ này được lưu trữ trong một đối tượng ký tự, giá trị tích phân của đối tượng ký tự đó bằng giá trị của dạng ký tự đơn của ký tự đó. Việc một đối tượng char có thể chứa các giá trị âm hay không là do triển khai xác định. Các ký tự có thể được khai báo rõ ràng là unsigned hoặc signed. Plain char, signed char và unsigned char là ba kiểu riêng biệt, được gọi chung là các kiểu ký tự hẹp. Một char, một signed char và một unsigned char chiếm cùng một lượng lưu trữ và có cùng các yêu cầu căn chỉnh (3.11); nghĩa là chúng có cùng một biểu diễn đối tượng. Đối với các kiểu ký tự hẹp, tất cả các bit của biểu diễn đối tượng đều tham gia vào biểu diễn giá trị. Đối với các kiểu ký tự hẹp unsigned, tất cả các mẫu bit có thể có của biểu diễn giá trị đều biểu diễn các số. Các yêu cầu này không áp dụng cho các kiểu khác. Trong bất kỳ triển khai cụ thể nào, một đối tượng char thuần có thể có cùng các giá trị như một signed char hoặc một unsigned char; cái nào được triển khai xác định.
。
Tiêu chuẩn quy định rất rõ ràng char, signature char và unsigned char là 3 loại khác nhau. Việc char được ký hay không dấu sẽ được quyết định dựa trên kịch bản triển khai cụ thể.
Còn tài liệu tiêu chuẩn C11 (ISO/IEC 9899:201x) thì sao?
6.7.2 Chỉ định loại 。
。
Sao chép mã Mã này như sau:
Mỗi tập hợp đa phân tách bằng dấu phẩy chỉ định cùng một kiểu, ngoại trừ trường bit, việc xác định xem chỉ định int có chỉ định cùng kiểu với signed int hay cùng kiểu với unsigned int hay không là tùy thuộc vào việc triển khai.
。
Có vẻ như các trường bit (trường bit) cũng gặp vấn đề tương tự. (Khái niệm về trường bit có thể hơi thiên vị. Trẻ em thường viết các giao diện hoặc giao thức cấp độ tương đối thấp chắc hẳn đã quen với nó. Bạn có thể tham khảo tại đây).
trong kết luận.
Trong C/C++, từ khóa signature rất cồng kềnh trong hầu hết các trường hợp, nhưng đối với hai tình huống được đề cập ở trên, tức là trong việc sử dụng các trường char và bit, nó vẫn có vai trò tương đối ít người biết đến.
Luôn luôn tốt để nhắc nhở bản thân.
Cuối cùng, bài viết thảo luận chi tiết về từ khóa đã ký kết thúc tại đây. Nếu bạn muốn biết thêm về cuộc thảo luận chi tiết về từ khóa đã ký, vui lòng tìm kiếm các bài viết về CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi. tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!