Увы, нет
То, что обе переменные располагаются в одной области памяти, не гарантирует инициализацию незанятой памяти (а там - погода в Африке). В моем примере ключевое слово - calloc.
Так а кто мешает "занулить" юнион?
Хотите через calloc, хотите через memset.
Выделять память в куче для такой примитивной операции очень накладно.
На самом деле, если в программе используются подобные приемы, то размеры необходимых типов нужно проверять при старте сборки проекта и если размеры отличаются останавливать ее.