2013-02-10 4 views
1

Почему этот код распечатывает n-100?Почему эта функция C++ возвращает значение?

int hello(int n) 
    { 
     for(int i = 0; i < n-100; i++) 
     { 
     } 
    } 

    int main() 
    { 
      int h = hello(12); 
     cout << hello(12) << " " << h << endl; 
    } 

Тем не менее, обе эти функции обратного мусора (2665092 и 0 соответственно)

int hello1(int n) 
    { 
      for(int i = 0; i < 12; i++); 
    } 


    int hello2(int n) 
    { 
     (n - 100); 
    } 

Я составил этот код, используя г ++ в Cygwin среде.

+1

* «Почему этот код распечатывает n-100?» * Это не так, я получаю '1 1'. :) – jrok

+0

Возвращаемое значение должно быть где-то сохранено, как в регистре. Если вы не установите возвращаемое значение, этот регистр может содержать что-то еще, например значение, которое вы использовали недавно. –

+0

@BoPersson ах благодарю вас, это имеет много смысла. –

ответ

5

Вы видите только результат не определено поведение.

Всегда компилируйте с помощью -Wall -Werror, чтобы предотвратить появление такого рода ошибок в вашем коде.

Смежные вопросы