возврат функции не назначен переменной - PullRequest
3 голосов
/ 08 июля 2010

Что если вы вызываете (не пустую) функцию, но не присваиваете ее возвращаемое значение переменной? например, getchar ();

Мне всегда было интересно, что происходит с такой ценностью. Я слышал юмористические объяснения, такие как «он ушел в эфир» и так далее, но я действительно хотел бы знать это. Был бы какой-нибудь способ восстановить такую ​​ценность? Спасибо

Ответы [ 4 ]

4 голосов
/ 08 июля 2010

Это действительно зависит от компилятора / ЦП, но в большинстве случаев возвращаемое значение будет в регистре ЦП (если оно будет соответствовать), и, если последующий код не затронет этот регистр, вы можете получить его с помощью, например, "встроенный ассемблер ".

Чтобы лучше ответить на ваш вопрос, ничего не происходит со значением.Он находится в стеке или внутри регистра.Если вы используете его, хорошо ... если нет, то на самом деле ничего не происходит.В конце концов стек или регистр перезаписываются новыми значениями ...

4 голосов
/ 08 июля 2010

Нет, вы не будете.

Значение извлекается из стека и исчезает.

Если вам нужно возвращаемое значение, вы должны присвоить его переменной.

0 голосов
/ 08 июля 2010

Если вы хотите узнать больше о том, как все это работает, вы можете посмотреть на это: http://en.wikipedia.org/wiki/Call_stack

0 голосов
/ 08 июля 2010

Просто «возврат» (либо неявным вызовом return сам по себе, либо вообще не возвращение) и отсутствие присвоения значения делает именно это, не присваивает значение и, следовательно, составляет null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...