C -- return x,y; Ne anlamı var?
Birkaç yıl için C ve C programlama yapıyorum ve şu anda Üniversitede bir ders alıyorum ve kitabımız bir örnek için bu gibi bir işlevi vardı şimdi
int foo(){
int x=0;
int y=20;
return x,y; //y is always returned
}
Hiç böyle bir sözdizimi gördüm. Aslında, hiç ,
operatör parametre listeleri dışında kullanılan gördüm. Eğer y
ama her zaman dönerse, ne anlamı var o zaman? Return ifadesi bu şekilde oluşturulması gereken bir durum var mı?
(Ayrıca, C için de geçerlidir, çünkü ben de etiketli, benim kitap özellikle C olmasına rağmen )
CEVAP
C FAQ göre:
Doğrusu, genel ifadede virgül operatörünün anlamı
e1 , e2
"bu ifadeyi e1, e2; ifadenin değeri e2. değeri açısından değerlendirmek. Bu nedenle, e1 daha iyi bir atama veya artırma veya azaltma veya bir işlev çağrısı ya da yan etkisi da dahil oldu, çünkü aksi takdirde iptal olacaktır değerini hesaplamak olacaktır.
Seninle aynı fikirdeyim yaninokta diye bir şey yokbu geçerli olduğunu göstermek için başka bir hatadır.
Eğer C veya C de değerler geri dönmek istersen struct
x
y
üyeleri içeren oluşturmak, bu yapı yerine dönebilirsin:
struct point {int x; int y;};
Sonra bir tür tanımlayabilir ve yardımcı kolayca struct
içinde hem değerler döndürmek için izin fonksiyonu
typedef struct point Point;
Point point(int xx, int yy){
Point p;
p.x = xx;
p.y = yy;
return p;
}
Ve sonra yardımcı işlevi kullanmak için orijinal kodu değiştirin:
Point foo(){
int x=0;
int y=20;
return point(x,y); // x and y are both returned
}
Ve son olarak bunu deneyin:
Point p = foo();
printf("%d, %d\n", p.x, p.y);
Bu örnek, C ve C de derler . Olarak Mark aşağıda işaret etmektedir, C daha zarif bir çözüm sağlayabilen point
yapı için bir kurucu tanımlayabilirsiniz.
Bir yan not, birden çok değer doğrudan döndürmek için özelliği destekleyen Python gibi dillerde harika
def foo():
x = 0
y = 20
return x,y # Returns a tuple containing both x and y
>>> foo()
(0, 20)
#XXX anlamı nedir?...
Neden Matematik yapıyor.yuvarlak(0.499...
Ne kolon anlamı, star'in Haritası...
&Quot anlamı nedir;... ..." token...
DECİMAL anlamı nedir?...