Hãy nói rằng tôi đã sau struct
:Các trường bit có ít hơn int có phải là chủ đề của quảng cáo không tách rời?
struct A
{
unsigned int a : 1;
unsigned int b : 1;
};
gì tôi quan tâm là loại biểu a + b
. Trong khi các trường bit về mặt kỹ thuật có "loại" có kích thước nhỏ hơn int
để quảng bá tích phân có thể xảy ra và kết quả là int
giống như nó xảy ra trong gcc và clang.
Nhưng vì không thể trích xuất chính xác loại trường bit và nó sẽ luôn được suy ra là loại "lớn" (tức là unsigned int
trong trường hợp này) có đúng không? Bởi vì chúng ta không thể thực sự nói về các loại chính xác và kích thước của chúng cho các trường bit, ngoại trừ chúng được suy ra như là unsigned int
, trong trường hợp này, việc thúc đẩy tích phân không nên xảy ra.
(Một lần nữa câu hỏi của tôi bắt nguồn từ thực tế là MSVC xảy ra khi nghĩ rằng unsigned int
là loại biểu hiện như vậy)
Phiên bản studio trực quan nào, có thể có ý nghĩa khi thêm thẻ đó trong trường hợp những người khác có cùng vấn đề –
@ShafikYaghmour Đó là phiên bản mới nhất nhưng tôi đã thêm nó vào trường hợp. – Predelnik
Cũng có liên quan: [Tại sao một đoạn mã ngắn phải được chuyển thành một int trước khi phép toán số học trong C và C++?] (Http://stackoverflow.com/q/24371868/1708801) –