Ponteiro oscilante em C

Eu escrevi um programa em C com ponteiro pendent

#include<stdio.h>

int *func(void)
{
    int num;
    num = 100;
    return &num;
}

int func1(void)
{
    int x,y,z;
    scanf("%d %d",&y,&z);
    x=y+z;
    return x;
}

int main(void)
{
    int *a = func();
    int b;
    b = func1();
    printf("%d\n",*a);
    return 0;
}

Estou recebendo o saída como 100 mesmo que o ponteiro esteja osciland

Eu fiz uma única alteração na função acimafunc1(). Em vez de pegar o valor dey ez da entrada padrão como no programa acima, agora estou atribuindo o valor durante o tempo de compilaçã

Redefini ofunc1() do seguinte modo

int func1(void)
{
    int x,y,z;
    y=100;
    z=100;
    x=y+z;
    return x;
}

Agora ooutput é 200.

Alguém pode me explicar o motivo das duas saídas acim

questionAnswers(7)

yourAnswerToTheQuestion