Форум программистов, компьютерный форум CyberForum.ru

Что с выводом на консоль? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перевод С++ в Си http://www.cyberforum.ru/cpp-beginners/thread1093707.html
Помогите,пожалуйста,переделать под язык Си. #include <iostream> using namespace std; #define n 3 void main() { int A; int N; for ( int i =0; i < n*n ; i ++ )
C++ Как правильно создать свою DLL ? как правильно создать свою DLL допустим имеется класс class SystemProcesses { typedef std::list<PROCESSENTRY32> ProcessList; ProcessList::iterator m_pProcess; HANDLE m_hSnap; PROCESSENTRY32 m_processEntry; ProcessList m_slProcessList; http://www.cyberforum.ru/cpp-beginners/thread1093701.html
C++ Найти среднее арифметическое элементов каждой строки матрицы
Найти среднее арифметическое элементов каждой строки матрицы Q (l, m) и отнять его от элементов этой строки матрица 7х7, зарание спасибо
Перевод в 12-ричную систему счисления C++
помогите , подскажите как правильно перевести
C++ Поместить в класс http://www.cyberforum.ru/cpp-beginners/thread1093668.html
Нужно сделать эту программу с использованием класса.Я же болел вначале семестра,и не совсем понял.Помогите пожалуйста переделать,вот код. #include <iostream> #include <ctype.h> #include <string> using namespace std; int main() { string s; char ch; int pos;
C++ Найти расстояние между отрезками Даны координаты точек двух отрезков, найти расстояние между ними. подробнее

Показать сообщение отдельно
mariko_11
2 / 2 / 1
Регистрация: 11.03.2013
Сообщений: 64
10.02.2014, 21:42     Что с выводом на консоль?
Имеется классическая функция рекурсивного поиска чисел Фибоначчи. Вывод на консоль ведёт себя неожиданно.

Вот в этом варианте

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
 
using namespace std;
 
long long int counter=0;
 
template <class T>
T fib(T n)
{
 
    counter++;
    if (n==0||n==1)
        return n;
    else
        return fib(n-1)+fib(n-2);
 
}
int main()
{
    long long int k=4;
 
    cout << fib(k) << "\t" << counter << endl;
 
    cout << "Hello World!" << endl;
    return 0;
}
на консоль выводится, что значение счётчика равно 0. Почему ? Причём оно действительно меняется во время работы функции. Стоит только заменить вывод на
C++ (Qt)
1
cout << fib(k) << "\t"; cout << counter << endl;
,
всё начинает работать нормально. Это что же, получается, в cout сначала попадает значение глобальной переменной и только потом результат расчёта чисел Фибоначчи? А с какой стати? Вызов функции идёт раньше.

Добавлено через 9 минут
Вот ещё что обнаружилось:
C++ (Qt)
1
2
3
int a=1;
 
    cout << a << "\t" << ++a << endl;
Компилятор сообщает, что результат может быть не определён. Выводятся две двойки. И вот почему ? Вообще где можно почитать про очерёдность выполнения в таком случае ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru