Visualizzazione dei risultati da 1 a 4 su 4

Hybrid View

  1. #1
    MAX=I;
    MIN=I;
    strcpy(XA, NM);
    strcpy(XB, NM);

    o

    strcpy(MAX, I);
    strcpy(MIN, I);
    strcpy(XA, NM);
    strcpy(XB, NM);
    è uguale o cambia qualcosa?

    I=(float)AT/(float)AB*100;
    Come mai bisogna scrivere float se sono state dichiarati numeri interi?

    printf( "\nCONT %d - N %d\n", CONT, N );
    Semplicemente geniale.

    Grazie ancora!

  2. #2
    Quote Originariamente inviata da The_Mustang_24 Visualizza il messaggio
    codice:
    MAX=I;
    MIN=I;
    strcpy(XA, NM);
    strcpy(XB, NM);
    o

    codice:
    strcpy(MAX, I);
    strcpy(MIN, I);
    strcpy(XA, NM);
    strcpy(XB, NM);
    è uguale o cambia qualcosa?
    Sì, il primo funziona, il secondo nemmeno compila.

    strcpy è solo per le stringhe di caratteri, per cui la normale assegnazione non funziona dato che bisogna copiare più caratteri (e fermarsi al terminatore della stringa); per tutti i tipi primitivi si usa la normale assegnazione.

    codice:
    I=(float)AT/(float)AB*100;
    Come mai bisogna scrivere float se sono state dichiarati numeri interi?
    Bisogna scrivere float esattamente perché sono dichiarati numeri interi. Dato che AT e AB sono interi, AT/AB effettua una divisione intera, che non calcola le cifre decimali; moltiplicare per 100 dopo non serve a niente - la precisione si è persa nella divisione. Se ad esempio AT fosse 2 e AB fosse 3, il risultato che tu vorresti è 66, mentre quello che otterresti facendo AT/AB*100 sarebbe 0 (2/3 = 0 in divisione intera; 0*100 = 0).

    Fare un cast a float fa in modo che la divisione venga eseguita in floating point, per cui (float)2/(float)3 = 0.6666666f; 0.6666666f * 100 = 66.666f.

    Nota che il fatto che il tutto venga assegnato ad una variabile di tipo float non ha alcuna influenza su come viene valutata l'espressione: il calcolo dell'espressione avviene indipendentemente da dove andrà ad essere assegnato il suo risultato.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.