Tôi có hai quần short 16 bit (s1 và s2) và tôi đang cố kết hợp chúng thành một số nguyên 32 bit (i1). Theo spec tôi đang xử lý, s1 là từ quan trọng nhất, và s2 là từ ít quan trọng nhất, và từ kết hợp dường như được ký. (ví dụ: bit trên cùng của s1 là dấu hiệu.)Cách gọn gàng nhất để kết hợp hai quần short vào một số
Cách sạch nhất để kết hợp s1 và s2 là gì?
tôi đã tìm một cái gì đó giống như
const utils::int32 i1 = ((s1<<16) | (s2));
sẽ làm gì, và có vẻ như để làm việc, nhưng tôi lo lắng về trái chuyển một đoạn ngắn bằng 16.
Ngoài ra, tôi quan tâm đến ý tưởng sử dụng một liên minh để thực hiện công việc, bất kỳ suy nghĩ nào về việc đây là một ý tưởng tốt hay xấu?
Trong trường hợp quần short tôi không chắc chắn điều này là cần thiết. Tiêu chuẩn này có: "Các toán hạng phải là loại tích phân hoặc liệt kê và các chương trình khuyến mãi tích phân được thực hiện. Kiểu kết quả là toán hạng của toán hạng trái được khuyến khích". Do đó, đoạn mã ngắn sẽ được quảng bá một cách ngầm định. –
Huh. Tôi không biết điều đó - tôi đoán đó là vì tôi luôn siêu hoang tưởng về kích thước loại dữ liệu. Cảm ơn con trỏ. –
Thật tuyệt khi bị hoang tưởng bởi vì dàn diễn viên chắc chắn sẽ được yêu cầu trên nền tảng với int 16 bit! –