Re: [問題] 沒有return
是的,gcc可以編過.我還幫你做了個實驗.
下面是程式碼:
bigdick@bigdick:~/code$ cat no_return.c
#include <stdio.h>
#include <stdlib.h>
int f1(int b)
{
int a;
a = b + 3;
}
int main(void)
{
int x;
printf("輸入一個數字: ");
scanf("%d", &x);
printf("執行結果為: %d\n",f1(x));
return 0;
}
***********************************************
bigdick@bigdick:~/code$ gcc -o no_return no_return.c <-- 編譯通過
bigdick@bigdick:~/code$ ./no_return <-- 執行看看
輸入一個數字: 12
執行結果為: 15
是的,的確在沒有return的情況下幫你回傳了a值.
接下來,我們把程式碼再改一點地方再次編譯:
bigdick@bigdick:~/code$ cat no_return.c
#include <stdio.h>
#include <stdlib.h>
int f1(int b)
{
int a, c; <--這邊我增加了區域變數c
a = b + 3;
c = b; <--單純把參數b的值複製給c
}
int main(void)
{
int x;
printf("輸入一個數字: ");
scanf("%d", &x);
printf("執行結果為: %d\n",f1(x));
return 0;
}
**********************************************
再次編譯跟執行:
bigdick@bigdick:~/code$ gcc -o no_return no_return.c <--編譯OK
bigdick@bigdick:~/code$ ./no_return <--執行看看
輸入一個數字: 12
執行結果為: 12
大家看到這邊應該有猜出來,
gcc當你指定回傳型態時,若你沒有return,
它會自己幫你挑出一個回傳,
而那個回傳值就是你動到的最後一個區域變數.
有人說VC不行,所以你的問題就只是編譯器造成的結果罷了(Dev-C採用gcc作編譯器).
也沒有什麼為什麼,人家編譯器就是設計成這樣,希望這樣有滿足到你的求知慾.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.161.188.88
→
10/20 02:19, , 1F
10/20 02:19, 1F
推
10/20 02:27, , 2F
10/20 02:27, 2F
推
10/20 02:31, , 3F
10/20 02:31, 3F
→
10/20 02:31, , 4F
10/20 02:31, 4F
→
10/20 02:32, , 5F
10/20 02:32, 5F
→
10/20 02:33, , 6F
10/20 02:33, 6F
→
10/20 02:34, , 7F
10/20 02:34, 7F
→
10/20 02:34, , 8F
10/20 02:34, 8F
→
10/20 02:35, , 9F
10/20 02:35, 9F
→
10/20 09:13, , 10F
10/20 09:13, 10F
→
10/20 09:14, , 11F
10/20 09:14, 11F
→
10/20 09:14, , 12F
10/20 09:14, 12F
→
10/20 09:14, , 13F
10/20 09:14, 13F
→
10/20 09:49, , 14F
10/20 09:49, 14F
推
10/20 10:10, , 15F
10/20 10:10, 15F
→
10/20 10:34, , 16F
10/20 10:34, 16F
→
10/20 10:35, , 17F
10/20 10:35, 17F
→
10/20 10:35, , 18F
10/20 10:35, 18F
→
10/20 10:36, , 19F
10/20 10:36, 19F
→
10/20 10:37, , 20F
10/20 10:37, 20F
→
10/20 10:38, , 21F
10/20 10:38, 21F
→
10/20 10:38, , 22F
10/20 10:38, 22F
→
10/20 10:39, , 23F
10/20 10:39, 23F
推
10/20 10:45, , 24F
10/20 10:45, 24F
→
10/20 11:00, , 25F
10/20 11:00, 25F
→
10/20 11:22, , 26F
10/20 11:22, 26F
推
10/20 23:00, , 27F
10/20 23:00, 27F
→
10/20 23:00, , 28F
10/20 23:00, 28F
→
10/20 23:03, , 29F
10/20 23:03, 29F
推
10/21 00:19, , 30F
10/21 00:19, 30F
→
10/21 00:19, , 31F
10/21 00:19, 31F
→
10/21 00:30, , 32F
10/21 00:30, 32F
討論串 (同標題文章)