おい、スーバープログラマども、教えてください。

int main(void)
{
int a = funcA();
return 0;
}

void funcA(void)
{
int index = 1;
return index++;
}

上のようなコードがあった場合、main の a に入る値は funcA の戻り値です。
この戻り値には、何が入るのでしょうか。

return に、indexの値が入れば、戻り値は1
return に、index++の値が入れば、戻り値は2

どちらが正しいのでしょう。

直感的に、(index++)の結果をreturnする、と解釈し、2だと思いましたが、
実際にVisual C++でテストしたところ、結果は1でした。
もし、return index のあとに index++ となるとしても、return というのは、
関数のコンテキストを離れてしまうわけで、そうすると既にfuncAのスタックとかは
残ってないわけで、何に対して++をするのかわかりません。
もしかして、この++は無効だとしてコンパイラが自動的にはじいているのでしょうか?
混乱してます。