C/C+:関数を呼び出してグローバル変数を初期化

4951 ワード

C/C+:関数を呼び出してグローバル変数を初期化
実験環境:
[jiang@eb50 ~]$ uname -a
Linux eb50 2.6.18-348.el5 #1 SMP Wed Nov 28 21:22:00 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
gcc    4.1.2 20080704 (Red Hat 4.1.2-54)

まずCを見てみましょう.
#include 
#include 

time_t mt = time(NULL);

int foo()
{
    return 10;
}

int x = foo();

int main()
{
    fprintf(stdout, "%s", ctime(&mt));
    fprintf(stdout, "%d
"
, x); return 0; }
[jiang@eb50 ~]$ gcc -o main main.c
main.c:4:   :           
main.c:11:   :           

C++を見てみましょう.
#include 
#include 

using namespace std;

time_t mt = time(NULL);

int foo()
{
    return 10;
}

int x = foo();

int main()
{
    cout<cout<return 0;
}
[jiang@eb50 ~]$ g++ -o main main.C
[jiang@eb50 ~]$ ./main
Fri Jun 23 16:30:26 2017
10

そのCファイルをg++でコンパイルしてみます.
[jiang@eb50 ~]$ g++ -o main main.c
[jiang@eb50 ~]$ ./main
Fri Jun 23 16:31:04 2017
10

==通過しました...
質問をします.
#include 
#include 
#include 

using namespace std;

time_t mt1 = time(NULL);

unsigned int r1 = sleep(1);

time_t mt2 = time(NULL);

unsigned int r2 = sleep(1);

time_t mt3 = time(NULL);

int main()
{
    cout<cout<cout<return 0;
}

順序付けされた呼び出しですか?保証できますか?