#include <stdio.h>
union p
{
int x;
char y;
}
k = {.y = 97};
int main()
{
printf("%d\n", k.y);
return 0;
}
OUTPUT: 97
Tôi đã xem qua Câu hỏi này. Như chúng ta biết, chúng ta chỉ có thể khởi tạo thành viên đầu tiên của Union. Nhưng trong trường hợp này, tại thời điểm khởi tạo, biến số y
được khởi tạo thông qua một số phương thức đã cho!Cách Giải thích Đầu ra của Liên minh C này
Bất kỳ ai cũng có thể giải thích cho tôi cách k = {.Y = 97} vi phạm quy tắc được nêu trong cuốn sách của Dennis Ritchie "Liên minh chỉ có thể được khởi tạo với giá trị kiểu thành viên đầu tiên" và khởi tạo biến thứ hai thay thế?
Ai nói với bạn, bạn chỉ có thể khởi tạo các thành viên đầu tiên của một số 'union'? Đây là một sai lầm (bạn có thể khởi tạo bất kỳ thành viên duy nhất của một số công đoàn). –
Các initialisers được chỉ định đã được giới thiệu trong c99. dmr không biết về điều đó trong những năm bảy mươi. – wildplasser
Có thể tính cuối cùng đã đảo ngược quy tắc. –