Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C] significato operatore *=

    Per quanto ne sappia, scrivere
    a*=2
    equivale a scrivere
    a=a*2
    ovvero a moltiplicare per due il "vecchio" valore di a.

    E allora perché se esegue questo codice:
    codice:
     
    #include<stdio.h>
    int main(){
      int vet[]={1,2,3,4,5,6};
      int i; int p=1;
      for(i=1;i<6;i++){ p*=vet[i]/2; printf("%d ",p);}
      return 0;
    }
    ottengo
    1 1 2 4 12

    mentre sostituendo
    p=p*vet[i]/2 al posto di p*=vet[i]/2
    ottengo
    1 1 2 5 15
    ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    precedenze operatori e troncamento (visto che usi variabili intere)

  3. #3
    Potresti essere più chiaro?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    maieuticamente: quando dividi un intero "qualcosa" di storto può accadere

    codice:
    #include<stdio.h>
    int main(){
      float vet[]={1,2,3,4,5,6};
      int i; float p=1;
      for(i=1;i<6;i++){              
      p=p*vet[i]/2; 
    //  p*=vet[i]/2; 
      printf("%f ",p);}
      return 0;
    }
    prova questo.
    Che conclusioni puoi trarne?

  5. #5
    L'operatore *= faceva in modo che l'operazione effettivamente eseguita fosse:
    p=p*(int)vet[i]/2);
    grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.