Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536

    [C++] che significa ? e :

    ciao
    scusate l'ignoranza, ma che significa
    il punto interrogtivo e i 2 punti in un codice del tipo:

    for (i=0;i<RILEVAZ;i++){
    scost = t[i]>mt ? t[i]-mt : mt-t[i];
    somScost += scost;

    oppure più semplicemente:

    n = (n>10 ? 10 : n);




    grazie

  2. #2

    Re: [C++] che significa ? e :

    Originariamente inviato da lucas726
    ciao
    scusate l'ignoranza, ma che significa
    il punto interrogtivo e i 2 punti in un codice del tipo:

    for (i=0;i<RILEVAZ;i++){
    scost = t[i]>mt ? t[i]-mt : mt-t[i];
    somScost += scost;

    oppure più semplicemente:

    n = (n>10 ? 10 : n);




    grazie
    Se t[i] è maggiore di mt, alla variabile scost assegno il valore t[i] - 1, altrimenti assegno il valore mt - t[i].

    ? : è un operatore di confronto ternario.

    codice:
    condizione ? true: false;

  3. #3
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558
    E un abbreviazione del costrutto if

    codice:
    condizione ? allora : altrimenti
    è come dire

    codice:
    if condizione
    {
    //allora
    }
    else
    {
    //altrimenti
    }
    A me non piace ma cmq in certi casi può essere utile per esprimere condizioni semplici semplici


  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    E' qualcosa di più di un semplice if alternativo: è un operatore (come ha giustamente detto Michele Facchin).

    Questo significa che se l'espressione booleana risulta vera, l'intero codice assume come valore l'espressione dopo il punto di domanda, altrimenti l'intero codice assume il valore dopo i due punti.

    Tramite quell'operatore si possono abbreviare enormemente codici, altrimenti, più "pesanti". Prova a vedere questo codice, ad esempio:
    codice:
    int fattoriale(int x) {
       if (!x) {
          return 1;
       } else {
          return x * fattoriale(x - 1);
       }
    }
    Può essere scritto in una sola riga:
    codice:
    int fattoriale(int x) {
       return (!x) ? 1 : x * fattoriale(x - 1);
    }

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536
    grazie a tutti per l'intervento.

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