DOMANDA Codice C++ class friend non funziona

Dema.King84

Utente Attivo
506
57
Ma no, perchè scusa? Il mio esempio è identico a a /= b;, dove al posto di 'a' c'è la n e al posto di b c'è 2.
Quello che riporti in grassetto è un esempio diverso e "più complesso":

Codice:
int n = 10;
int m = 5;

n *= m +1;  // corrisponde a "n = n * (m+1);"  ->  n = 10 * (5 + 1) = 60

prezzo e numero sono due variabili distinte e 1 è una costante numerica.
Il mio esempio è come il primo (e il secondo) tra quelli riportati. Nel mio esempio hai n e poi un valore noto (che è 2), in quello hai due valori non noti, "a" e "b" (nel primo esempio hai in realtà una costante numerica, come nel mio esempio).
Che siano due variabili con un valore qualsiasi o che invece di una variabile ci sia un valore numerico, non cambia nulla, l'operazione è sempre quella.

Inoltre sono problemi ai quali puoi risponderti direttamente eseguendo il codice. Quando hai un dubbio la risposta più rapida per capire come funziona è provare.

C++:
#include <iostream>

using namespace std;

int main()
{
    int n = 10;
    n *= 2;
    cout << "N: " << n << endl;
   
    int a = 10, b = 2;
    a *= b + 1;
    cout << "A: " << a << endl;
   
    return 0;
}

Per eseguire online http://cpp.sh/6klww

Output:
Codice:
N: 20
A: 30
Strano allora...praticamente è una semplice moltiplicazione ma con segno diverso...
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Cosa intendi per "segno diverso"?
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
che invece di avere il semplice * ha il segno composto *=

Si ma la differenza è che moltiplichi ed assegni direttamente il valore, senza usare la forma più lunga a = a*b.
 

Dema.King84

Utente Attivo
506
57
Si ma la differenza è che moltiplichi ed assegni direttamente il valore, senza usare la forma più lunga a = a*b.
Sto cercando di analizzare, apportando modifiche, il tuo codice con l' operatore di assegnamento composto ma essendo un capitolo che non ho ancora studiato mi sta creando non poche perplessità e dubbi. Per evitare di andare offtopic mi fermo qui, altrimenti sarebbe da aprire un topic a parte.
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili