lamurire subrutina C
Last Updated: Apr 08 2022 17:47, Started by
GreenEyes2020
, Apr 07 2022 22:16
·
0
#1
Posted 07 April 2022 - 22:16
Buna buna tuturor, vrea sa va rog, doar pe cei care sunt in cunostinta de cauza ... sa ma lamuriti si pe mine o chestie.La acest program, luat de pe net ... as dori sa aflu de ce dupa compilare are rezultatul :
6 5 21 6 5 De ce la f(a,b) este 21 si nu n+b+m, adica m=6+5=11 deci 11+6+5=22 ? #include<stdio.h> int a,b; int f(int m,int n) { m=n+b; n+=1; return n+b+m; } void main() { a=6; b=5; printf("\n%d %d ",a,b); printf("\n%d ",f(a,b)); printf("\n%d %d ",a,b); return 0; } Edited by MarianG, 07 April 2022 - 22:31. |
#2
Posted 07 April 2022 - 22:39
f(6,5) int f(int m,int n) // 6, 5 { m=n+b; // n = 5; b= 5; m=10 n+=1; // n = 5+1; n=6 return n+b+m; // 6 + 5 + 10 } Edited by MarianG, 07 April 2022 - 22:40. |
#3
Posted 07 April 2022 - 23:33
int f(int m,int n) // 6, 5 { m=n+b; // n = 5; b= 5; m=10 // de ce la n=5 si b=5 ? asta nu inteleg daca f este f(6,5) , m nu ar trebui sa fie m=6 ? n+=1; // n = 5+1; n=6 return n+b+m; // 6 + 5 + 10 }
Edited by MarianG, 08 April 2022 - 00:01.
|
#4
Posted 08 April 2022 - 00:03
f (6, 5)m = 6 n = 5 m = n + baici m este rescris si devine 5 + 5 Edited by MarianG, 08 April 2022 - 00:06. |
#5
Posted 08 April 2022 - 03:16
Depinde ce compilator e folosit, C sau C++. Din câte știu convenția C e ca parametrii să fie transmiși prin valoare, iar în C++ prin referință.
Dacă parametrul m este transmis prin referință atunci valoarea lui va fi rescrisă în variabila ”a” la fiecare executare a funcției f. |
#6
Posted 08 April 2022 - 06:59
De fapt nu depinde de C <-> C++, in sensul ca avand exact acelasi cod sursa sa rezulte o semantica diferita din acest punct de vedere. In C ai doar transmitere prin valoare. In C++ ai SI transmitere prin referinta, dar alegerea valoare<->referinta se face explicit cand declari functia: int f(int m,int n) versus int f(int& m,int& n).
Exista limbaje unde parametrii, sau unii dintre ei in functie de tip, sunt transmisi automat prin referinta. De exemplu in Javascript obiectele sunt transmise prin referinta, dar si acolo la parametrii de tipuri elementare (de genul int) tot prin valoare se transmit. Edited by sags, 08 April 2022 - 07:00. |
#7
Posted 08 April 2022 - 08:05
#8
Posted 08 April 2022 - 10:11
IDE-ul are un debugger ce te lasa sa rulezi codul linie cu linie si sa vezi in fiecare moment ce valoare are fiecare variabila.
|
#9
Posted 08 April 2022 - 17:43
#10
Posted 08 April 2022 - 17:47
Ce este cu acuzatia asta ca eu as avea nevoie de postCount++ ?
Quote Din câte știu convenția C e ca parametrii să fie transmiși prin valoare, iar în C++ prin referință. Nu vrea ca lumea sa ia de bun chestia pe care ai spuso. Si chiar imi pare rau ca a trebuit s-o spun, mai ales ca incerc sa moderez aceasta arie. Edited by MarianG, 08 April 2022 - 17:47. |
|
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users