[問題] 一程式問題 和一個小問題

作者: horse2819 (風要飛翔)   2014-05-13 08:06:53
#include <stdio.h>
int sum_of_square(int a, int b)
{
int square(int v)
{return v*v;
}
return square(a) + square(b);
}
int main()
{printf("%d", sum_of_square(3, 4));
return 0;
}
請問為何無法通過編譯呢
在其他版發問
一位說 因為函式內沒用到 a b
一位說不可擁巢狀函式
不知道哪個才是對的
還有一個小問題是
void 函式
這樣是這個函式不會回傳任何值
即使是函式內有return也是嗎?
作者: petercoin (彼得幣)   2014-05-13 08:47:00
compiler告訴我int square()是違反規則的 把他拉出去拉到sum_of_square上面再編譯就可以了a跟b沒用到在VS上頂多是給一個warning 不會編譯不過
作者: flydragon198 (Richard)   2014-05-13 09:17:00
http://codepad.org/vlM1ABpu 把square拉出來可以過都定義void了,如果還return,會錯誤吧前面是因為巢狀函式,在函式內又定義函式造成錯誤
作者: LPH66 (-6.2598534e+18f)   2014-05-13 09:31:00
void 函式也是能半途 return 出來的, 只是不能帶值而已原 PO 的問題簡答是不允許巢狀函式, 但這句話在現在的 C++卻不完全正確 -- 不過對新手來說就先這樣記吧
作者: GoalBased (Artificail Intelligence)   2014-05-13 10:13:00
本來想回2 但又覺得怪怪的XD
作者: damody (天亮damody)   2014-05-13 14:47:00
這問題超大的
作者: jack710619 (ECLin)   2014-05-13 15:02:00
這排版......
作者: bigpigbigpig (To littlepig with love)   2014-05-13 21:42:00
請不要用 Pascal 的風格寫 C 語言程式 :)
作者: IhateOGC (我討厭)   2014-05-13 22:25:00
指向function的指標,就是個int function指標吧@@?
作者: Caesar08 (Caesar)   2014-05-13 23:01:00
LPH66,為什麼不能用 C++不允許巢狀函式 解釋呢?
作者: azureblaze (AzureBlaze)   2014-05-13 23:10:00
大概認為lambda function算是巢狀函式?
作者: yvb   2014-05-14 16:55:00
GNU C extension 接受巢狀函式, 故原PO程式用gcc可編譯並執行.

Links booklink

Contact Us: admin [ a t ] ucptt.com