Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Presbiopia - la 43 ani ?

Termen transcriere autovehicul

Cazare Timisoara pe 4-5 zile

Primele zile ale internetului per...
 Ditra 25

Casti USB-C ptr A-54

Aplicatie medicala / asistent med...

De ce vor atația politicieni...
 ERR_ADDRESS_UNREACHABLE

Legea 18/1968 Se mai aplica?

Digi conectare 2 routere prin fir

Succesiune notar versus instanta ...
 Montaj aer conditionat in balcon ...

Cont curent mulți valuta far...

Sugestii plan casa

Experiente cu firme care cumpara ...
 

Ce face acest operator?

- - - - -
  • Please log in to reply
12 replies to this topic

#1
JustXXL

JustXXL

    Active Member

  • Grup: Members
  • Posts: 1,267
  • Înscris: 04.03.2020
Ce face operatorul %=?
Pe net nu am reusit sa gasesc explicatia.
Stiu doar ca rezultatul la program este 0.
Dar nu stiu cum s-a ajuns la asta.
Multumesc!

#include <iostream>
using namespace std;
int main()
{
		int x;
		x = 4;
		x %= 4;
		cout << x;
	 return 0;
}

Edited by JustXXL, 11 May 2022 - 20:23.


#2
AlexEn

AlexEn

    Spoiled brat

  • Grup: Moderators
  • Posts: 21,921
  • Înscris: 18.12.2007
https://www.tutorial...rs-in-Cplusplus

#3
sparkyson

sparkyson

    Senior Member

  • Grup: Senior Members
  • Posts: 2,142
  • Înscris: 11.01.2009
x %= y este restul impartirii lui x la y.
Este forma simplificata a lui x = x % y, la fel cum x += y este echivalent cu x = x + y, x /= y cu x = x / y samd.

Dar, sincer, decat sa scrii cod inteligent, mai bine scrii cod usor de citit si inteles, daca nu iti place sa cauti bug-uri cu orele :).

#4
mihaicozac

mihaicozac

    Guru Member

  • Grup: Senior Members
  • Posts: 15,593
  • Înscris: 05.12.2005
Modulo se numeşte...

#5
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,428
  • Înscris: 10.08.2005

View PostJustXXL, on 11 mai 2022 - 20:13, said:

Ce face operatorul %=?
https://forum.softpe...cu-multe-erori/

Quote

c=n%10; // extrag ultima cifra

Quote

Stiu doar ca rezultatul la program este 0.
De ce ar fi alt rezultat ?
return 0;


#6
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,025
  • Înscris: 24.02.2006
1. "x %= 4" si "c = n % 10" sunt doua operatii complet diferite. sparkyson a explicat cel mai bine
2. legat de intrebarea "De ce ar fi alt rezultat ?",  sa consideri ca return-ul este rezultatul programului este un punct de vedere foarte simplist si incorsetat in semantica. este clar din codul lui, cel putin pentru mine, ca "rezultatul" programului este ce anume se afiseaza pe ecran (adica "cout << x;"), nu exist code-ul intors de functia main.

#7
robert23mg

robert23mg

    Member

  • Grup: Members
  • Posts: 539
  • Înscris: 18.06.2017
Domnule Smiley daca scriu o functie care aduna 2 numere, este un punct de vedere foarte simplist si incorsetat in semantica sa consideram rezultatul ceea ce apare pe ecran.

#include <iostream>
using namespace std;
int incercare(int a, int b)
{
		 cout << "Atentie, intorc rezultatul";
		 return a + b;
}


x %= si c = y % nu sunt deloc operatii complet diferite, este aceeasi operatie dar cu valori diferite, in primul caz este restul impartirii lui x la 4, in al 2 lea caz restul impatirii lui n la 10, dar daca folositi aceleasi valori o sa aveti acelasi rezultat, pentru ca este aceeasi operatie

pentru x = 10, avem acelasi rezultat si in cazul x %= 10 si in cazul x = x % 10

#8
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,025
  • Înscris: 24.02.2006
- in primul caz (x%=4) in lui x i se asigneaza rezultatul operatiei %
- in al doilea caz (c=n%10) rezultatul operatiei e salvat in c, iar variabila asupra careia s-a efectuat operatia % (adica n, in cazul nostru) ramane neschimbata
din cauza asta cred ca este gresit sa le consideri aceeasi operatiune.


cat despre rezultat....tu cand pornesti Word-ul, de exemplu, o faci ca sa vezi ce exit code intoarce, sau ca sa editezi/vizualizezi documente?
fix asta e diferenta din postul lui MarianG. rezultatul programului nu este acel "return 0", ci "cout << x".
nu trebuie sa te blochezi in ideea de "ce apare de ecran", rezultatul poate fi, de exemplu, generarea unui fisier pe hdd, sau trimiterea unor date prin retea.

Edited by _Smiley_, 12 May 2022 - 09:29.


#9
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,428
  • Înscris: 10.08.2005

View Post_Smiley_, on 12 mai 2022 - 06:03, said:

1. "x %= 4" si "c = n % 10" sunt doua operatii complet diferite.
folosesc acelasi operator

#10
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007
Din perspectiva limbajului % si %= sunt operatori diferiti. Pot fi suprascrisi fiecare in alt mod.

#11
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,428
  • Înscris: 10.08.2005

View Post_Smiley_, on 12 mai 2022 - 09:27, said:

fix asta e diferenta din postul lui MarianG. rezultatul programului nu este acel "return 0", ci "cout << x".
doar zero
rezultatul programului /sub probramului/functiei/rutinei/etc este ce returnezi la sfarsit

rezultat = functie(argument)
unde, in cazul prezentat
 int functie (int argument) { return return argument % 4;)
functia returneza restul impartii
programul returneaza zero

Edited by MarianG, 12 May 2022 - 10:58.


#12
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007

View PostMarianG, on 12 mai 2022 - 10:56, said:

rezultatul programului /sub probramului/functiei/rutinei/etc este ce returnezi la sfarsit

E, dar initiatorul n-a ajuns asa departe. E inca la nivelul la care daca ceva nu apare pe ecran/in consola => nu exista.

#13
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,428
  • Înscris: 10.08.2005

View Postdani.user, on 12 mai 2022 - 10:55, said:

Din perspectiva limbajului % si %= sunt operatori diferiti. Pot fi suprascrisi fiecare in alt mod.
scris "scurt" de mana

View Post_Smiley_, on 12 mai 2022 - 06:03, said:

cel putin pentru mine, ca "rezultatul" programului este ce anume se afiseaza pe ecran (adica "cout << x;"), nu exist code-ul intors de functia main.
pe ecran se afiseaza o valoare
de aceea putem avea
#include <iostream>
using namespace std;
int functie(int argument)
{
return argument%4;
}
int main()
{
cout << functie(4) << endl;
return 0;
}

godbolt.org

Quote

ASM generation compiler returned: 0
Execution build compiler returned: 0
Program returned: 0
0

View Postdani.user, on 12 mai 2022 - 10:57, said:

E, dar initiatorul n-a ajuns asa departe. E inca la nivelul la care daca ceva nu apare pe ecran/in consola => nu exista.
Ma bucur ca ii ramane deschisa consola.
La problema precedenta ne-a spus de unde a copiat codul, de data asta nu.

Edited by MarianG, 12 May 2022 - 11:18.


Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate