Я изучаю c ++ и решил написать небольшую программу для практики в переменных областях. Проблема в том, что я получаю другой (и неправильный, на мой взгляд) вывод в Linux после компиляции и выполнения, в то время как в Windows все правильно. Вот код:
/*main.cpp*/
#include <iostream>
using namespace std;
extern int x;
int f();
int main() {
cout << " x = " << x << endl;
cout << "1st output of f() " << f() << endl;
cout << "2nd output of f() " << f() << endl;
return 0;
}
/*f.cpp*/
#include<iostream>
using namespace std;
int x = 10000;
int f() {
static int x = ::x;
{
static int x = 8;
cout << x++ << endl;
}
cout << x++ << endl; return x;
}
команда, которую я набираю на linux: $ g ++ main.cpp f.cpp && ./a.out
Желаемый вывод (вывод Windows):
x = 10000
8
10000
1st output of f() 10001
9
10001
2nd output of f() 10002
Учитывая (Linux) вывод:
x = 10000
1st output of f() 8
10000
10001
2nd output of f() 9
10001
10002
Как я могу сказать, кажется, что программа Linux пропускает cout функции int f (), любые идеи, почему такая вещьслучается