#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() никогда не выполнится?






