2016-04-08 7 views
-3

Bu kod geldi ve bu hat [X] o dönecektir bilmek istiyorum:lütfen hangisinin saklandığı birden fazla varyant döndüğünde bana bildirin?

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

Her zaman sonuncusu. Ayrıca, void main() kullanmayın. Bu çirkin. – Magisch

+0

@Magisch Anlamsız, genel bir C bağlamında 'void main' ile ilgili bir sorun yok, [buna bakın] (http://stackoverflow.com/a/31263079/584518). – Lundin

+0

Bunun için bir çift olmasaydı hayran olurdum :( –

cevap

7

Sen C. bir fonksiyonu bir kerede birden fazla değişkeni döndüremez deyimi

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

yalnızca q'u döndürür. p, q'daki ,, comma operator'dur. p değerlendirilecek ve değeri atılacak, daha sonra q değerlendirilecek ve daha sonra değeri iade edilecektir.

+2

Bunun sebebi, 'dönüş' FONKSİYONU DEĞİLDİR ve aynı sonucu 'return p, q;' ile alırdı. – jdarthenay

+0

Neden dönüş (p , q) 'p 'a eşittir, q', yani, int, a = (5, 6);' ve 'int a; a = 5, 6;' farklı ... –

+1

@CoolGuy; A = 5, 6; 'ifadesinde, ifade, '(a = 5), 6;' ise, geri dönüş p, q 'olurken, geri dönecektir (p, q)'. – haccks

İlgili konular