Chuyển đổi enum sang int c ++
Với thành viên enum, bạn thêm vào dự án một kiểu dữ liệu liệt kê do người dùng xác định bao gồm các điều tra viên được đặt tên duy nhất với các số nguyên được liên kết tự động. Vì Chora coi các kiểu liệt kê là các kiểu dữ liệu riêng lẻ nên các toán tử chuyển đổi kiểu đặc biệt luôn sẵn có cho phép bạn chuyển đổi một cách an toàn giữa số nguyên và kiểu liệt kê tương ứng Show Phép liệt kê để chuyển đổi số nguyên (int32)enum‑toán hạng (int16)enum‑toán hạng (int8)enum‑toán hạng (uint32)enum‑toán hạng (uint16)enum‑toán hạng (uint8)enum‑toán hạng Chuyển đổi số nguyên thành kiểu liệt kê (tên bài. enum‑name)số nguyên‑toán hạng Toán tử chuyển đổi kiểu liệt kê thành số nguyên chuyển đổi toán hạng enum đã cho thành kiểu dữ liệu số nguyên có dấu hoặc không dấu. Trong thực tế, việc chuyển đổi được thực hiện theo hai bước. Đầu tiên, giá trị nguyên được liên kết với điều tra viên trong toán hạng enum được xác định. Sau đó, thao tác chuyển đổi số nguyên được áp dụng trên giá trị này để chuyển đổi nó thành kiểu dữ liệu đích cuối cùng Tùy thuộc vào giá trị liệt kê được liên kết, việc chuyển đổi có thể dẫn đến mất thông tin. Chính xác, việc chuyển đổi một giá trị số nguyên thành một loại dữ liệu có thứ hạng thấp hơn dẫn đến các bit cao nhất của giá trị ban đầu bị cắt bớt. Nói một cách đơn giản, nếu giá trị được liên kết với điều tra viên không phù hợp với loại dữ liệu đích, thì giá trị do chuyển đổi sẽ khác với giá trị dự kiến Toán tử chuyển đổi số nguyên thành kiểu liệt kê chuyển đổi giá trị số nguyên không dấu đã cho trong toán hạng của kiểu dữ liệu liệt kê đã chỉ định. Trong thực tế, chuyển đổi này đánh giá các điều tra viên tồn tại trong điều tra và tìm kiếm một điều tra khớp với giá trị số nguyên đã cho. Trong quá trình tạo nguyên mẫu, thao tác này được giám sát chặt chẽ để tránh việc các số không có phần tử đối chiếu trong phép liệt kê vượt qua chuyển đổi. Nếu trường hợp như vậy được phát hiện, một lỗi thời gian chạy được báo cáo Với toán tử chuyển đổi rõ ràng, bạn chỉ định rõ ràng cách một toán hạng sẽ được xử lý trong biểu thức đã triển khai. Loại dữ liệu đích mong muốn được chỉ định giữa một cặp (. ) (dấu ngoặc đơn). Trong trường hợp liệt kê, kiểu dữ liệu bao gồm tên đơn vị, thành viên enum tương ứng được xác định bên trong và tên của chính thành viên enum, cả hai được phân tách bằng. dấu (dấu hai chấm). Ví dụ sau chuyển đổi Core. Toán hạng liệt kê hướng a1 đến uint32 và ngược lại Việc liệt kê rõ ràng để chuyển đổi số nguyên được thực hiện với các tác dụng phụ được mô tả ở trên. Do đó, việc áp dụng chuyển đổi trên toán hạng không khớp với kiểu dữ liệu đích sẽ dẫn đến giá trị toán hạng ban đầu bị cắt bớt. Vì bạn áp dụng thao tác một cách có ý thức, trình biên dịch Chora sẽ không báo cáo bất kỳ cảnh báo hay lỗi nào trong trường hợp đó Đổi lại, chuyển đổi số nguyên sang kiểu liệt kê đánh giá toán hạng số nguyên đã cho với mục đích tìm ra kiểu liệt kê tương ứng. Nếu không có điều tra viên phù hợp, quá trình chuyển đổi không thành công với lỗi thời gian chạy như mô tả ở trên Trình biên dịch Chora không thực hiện bất kỳ chuyển đổi kiểu ngầm định nào giữa các kiểu dữ liệu liệt kê và số nguyên ngay cả khi chuyển đổi là rõ ràng và rõ ràng. Trong mọi trường hợp, bạn phải chỉ định rõ ràng thao tác chuyển đổi mong muốn khi trộn các toán hạng của kiểu dữ liệu liệt kê và số nguyên trong một biểu thức
C++11
C++11
|