Nuovo chiarimento vecchia discussione c++

di il
8 risposte

Nuovo chiarimento vecchia discussione c++


#include<iostream>
using namespace std;


int main()

{

	int t = 0;
	int c = 0;
	int a = 0;

	do{
		
		cout << t << c;

		c = (c == (t = t == 1 == 0));

		cin >> a; //digitare un numero esempio 3

		cout << t << c;
		

		c = (c == (t = t == 1 == 0));

		cin >> a;  //digitare un numero esempio 3

		cout << t << c;

	

		c = (c == (t = t == 1 == 0));

		cin >> a; //digitare un numero esempio 3

		cout << t << c;



		c = (c == (t = t == 1 == 0));

		cin >> a; //digitare un numero esempio 3

		cout << t << c;





	} while (t == (t = t == 1 == 0));







}
 
output : 00 10 01 11 00

Ciao a tutti volevo sapere se qualcuno è in grado di spiegarmi l'output di questo programma dove la variabile "t" cambia una volta in 1 e una volta in 0 mentre la variabile "c" (che dipende dalla variabile "t" ) fa due volte 0 e due volte 1.

Grazie in anticipo
Zorro

8 Risposte

  • Re: Nuovo chiarimento vecchia discussione c++

    È simile a tutti gli altri casi...

    Hai seguito passo passo le varie assegnazioni e confronti, scindendo in tante parti più piccole le espressioni? Se non l'hai ancora fatto, impiega un po' di tempo a farlo altrimenti dicci cosa non hai capito del funzionamento delle singole parti
  • Re: Nuovo chiarimento vecchia discussione c++

    Ho scomposto come ho potuto ma deve esserci un errore perchè
    "t" = 0 e "c" = 0

    e fin qui bene,

    dopo il primo passaggio "c" non cambia in 1

    "t" = 1 e "c" = 0

    mentre dovrebbe cambiare anche "c" in 1 invece

    dopo il secondo passaggio "c" cambia in 1

    "t" = 0 e "c" = 1

    poi dopo il terzo passaggio

    "t" = 1 e "c"=1

    al quarto passaggio

    "t" = 0 e "c" = 0

    dunque come mai non sono sincronizzate le due variabili ?
    perche "t" cambia ad ogni passaggio e invece "c" si ripete due volte?
  • Re: Nuovo chiarimento vecchia discussione c++

    Quindi non è come l'altra volta che faceva una volta 1 e una volta 0 adesso fa due volte 1 e due volte 0.
  • Re: Nuovo chiarimento vecchia discussione c++

    E' come l'altra volta il tipo di "giochetto" ... usa le stesse regole ...

    Non mi pare che tu abbia esaminato bene i passaggi ... devi fare riferimento alle cout per capire i risultati mostrati ...

    alla prima cout c è 0 perché è inizializzato a 0
    alla seconda cout c è ancora 0 perché non cambia dopo il primo passaggio

    alla terza cout c diventa 1 perché cambia al secondo passaggio ... e continua ...
  • Re: Nuovo chiarimento vecchia discussione c++

    Guarda che alla terza "c" rimane 1 , alla seconda diventa 1 e alla terza rimane 1 cambia in 0 alla quarta
  • Re: Nuovo chiarimento vecchia discussione c++

    Siamo d'accordo su questo ?
    
       do{
          
          cout << t << c;                               <---- qui c è 0
    
          c = (c == (t = t == 1 == 0));
    
          cin >> a; //digitare un numero esempio 3
    
          cout << t << c;                               <---- qui c è 0
          
    
          c = (c == (t = t == 1 == 0));
    
          cin >> a;  //digitare un numero esempio 3
    
          cout << t << c;                             <---- qui c è 1
    
  • Re: Nuovo chiarimento vecchia discussione c++

    E siamo daccordo che alla quarta "c" rimane ancora 1 ?
  • Re: Nuovo chiarimento vecchia discussione c++

    Sì, quindi due volte 0 e due volte 1
Devi accedere o registrarti per scrivere nel forum
8 risposte