【ANSI-C】 C言語なら俺に聞け! Part 128
■ このスレッドは過去ログ倉庫に格納されています
0577デフォルトの名無しさん
2006/08/03(木) 22:53:26int 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のスタックとかは
残ってないわけで、何に対して++をするのかわかりません。
もしかして、この++は無効だとしてコンパイラが自動的にはじいているのでしょうか?
混乱してます。
■ このスレッドは過去ログ倉庫に格納されています