Newsgroup: it.comp.lang.c++
Titolo: Codice C++ Esatto ?

Salve, ho riscritto un nuovo "SORGENTE" potete aiutarmi sui commenti ?
----------------------------------------------------------------
/* Codice e Commento esatto */
#include <iostream>
using namespace std;
int main() { // inizio programma
 
   int total; // dichiara variabile
   int *ptr; // dichiara puntatore
   int val; // dichiara variabile
   total = 5000; // assegna valore a total
   *ptr = &total; // assegna il valore 5000 al puntatore
   val = *ptr; // assegna all'indirizzo di val il valore 
   if(val==5000) { // condizione se la variabile è uguale
 
       cout << " Codice C++ esatto \n"; // stampa su 
schermo
   }
 
   else {
      cout << " Codice C++ errato \n"; // stampa su schermo
  }
return 0;
}
----------------------------------------------------
Grazie a tutti
Cordiali saluti

 Cordiali saluti
-- 
si prepara direttamente nel bicchiere basso detto "tumbler basso". Tre o 
quattro cubetti di ghiaccio, aggiungere il gin, il martini rosso, il 
bitter campari e mescolare. Guarnire con una fetta d'arancia.

 della variabile total).
Il commento diventa giusto con l'istruzione:
*ptr = total;
Ciao

 wrote:

No. ptr non è inizializzato.
-- 
Horst


E allora? ptr puntera' a qualcosa di non definito, forse a niente, ma cio'
non toglie che quell'istruzione fa cio' che il commento dice.
Ciao

 non toglie che quell'istruzione fa cio' che il commento dice.
Il commento dice
   assegna il valore 5000 al puntatore
1) 
	*ptr = total
assegna il valore al oggetto puntato e non "al puntatore".
2) 
 
Se ptr non è inizializzato, allora ptr non punta ad un oggetto.
-- 
Horst

 Se ptr non č inizializzato, allora ptr non punta ad un oggetto.
Fatto sta che l'assegnamento avviene infatti dereferenziando ptr ottieni
5000. Ne segue che l'inizializzazione da questo punto di vista non e'
necessaria e non e' errato il commento considerando che in questo caso per
oggetto puntato possiamo considerare anche nessun oggetto puntato.
Ciao

 5000.
Ottieni 5000 o "segfault" ;-)
-- 
Horst

 Ottieni 5000 o "segfault" ;-)
Dici? Mi sai dire un caso in cui dereferenziando un puntatore non
inizializzato potrei ottenere segfault (non e' posto in tono arrogante ma di
semplice curiosita' :) ?
Ciao

 semplice curiosita' :) ?
int main()
{
    int *p;
    *p = 123;
    return 0;
}
GPF in Windows XP se compilato con Borland  C++ 5.5.1. Ma il punto è che
siccome sei in una situazione di undefined behavior allora puoi
aspettarti di tutto.
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg
The EMG Music page:         
http://www.emagsoftware.it/emgmusic

 aspettarti di tutto.
Si, pensavo ci fosse qualche caso in cui il segfault fosse la norma. Infatti
nel tuo esempio ho avuto un segfault al primo tentantivo, poi ho aggiunto e
tolto std::cout << *p << std::endl; e mi stampava 123 prima e non dava
segfault dopo :P
Ciao

    if(val==5000) { // condizione se la variabile è uguale
E' ovvio che la condizione è vera se la variabile
è uguale a 5000. Nei commenti si mettono informazioni in
più del tipo :
if ( val == 5000 )
{
    // la soglia ha raggiunto il livello massimo.
}
Ciao e buon lavoro.