#include <stdio.h>
struct s_base
{
int tag;
};
struct s1
{
int tag;
int data;
};
struct s2
{
int tag;
float data;
};
int main()
{
struct s1 a;
struct s_base *b = (struct s_base *) &a;
a.tag = 1234;
if(a.tag != b->tag)
{
printf("can never happen\n");
}
return 0;
}
У трёх структур общее «начало». Указатели на экземпляры структур s1 и s2 преобразовываются к указателям s_base. Гарантируется ли стандартом Си, что условие внутри if() никогда не выполнится?