2016-04-08 32 views
-3

我碰到這個代碼,並想知道這是什麼行[X],則回覆:請告訴我什麼時候多個變量被返回哪一個被存儲?

int add_multiply(int a, int b) 
{ 
    int p, q; 
    p = a + b; 
    q = a * b; 
    return (p, q); //X 
} 
void main() 
{ 
    int b, a = add_multiply(1, 2); 
    b = add_multiply(3, 4); 
    printf("%d%d", a, b); 
} 
+1

總是最後一個。另外,不要使用void main()。這很醜陋。 – Magisch

+0

@Magisch廢話,在通用的C語境中,'void main'沒有任何錯誤,[見本](http://stackoverflow.com/a/31263079/584518)。 – Lundin

+0

如果這裏沒有重複,我會感到驚訝:( –

回答

7

你不能一下子從一個函數在C.返回多個變量聲明

return(p, q); // or return p, q; 

僅返回q, in p, qcomma operatorp將被評估,它的值將被丟棄,然後q將被評估,然後它的值將被返回。

+2

你可以補充一點,因爲'return'不是一個函數,他會得到與'return p,q;'相同的結果。 – jdarthenay

+0

爲什麼'return(p ,q)''等於'return p,q'?我的意思是,'int a; a =(5,6);'和'int a; a = 5,6;'是不同的... –

+1

@CoolGuy;在'a = 5,6中',表達式將被評估爲'(a = 5),6;'而在'return p,q'中將會是'return(p,q)' – haccks

相關問題