[C] If con comportamento assurdo.


Rispondi
    Rispondi citando

[C] If con comportamento assurdo.

Uriel_Science » Mer Set 01, 2010 10:09 am

Codice: < >
#include <stdio.h>
#include <stdlib.h>
void main(){
   if(-1ul> 1l) printf("CIAO");           
   return 0;
}


guardate qui... qualcosa nn torna Very Happy

_________________
www.uriel1988.altervista.org


Uriel_Science
Programmatore
Programmatore
 
Messaggi: 285
Registrato: 05/01/09 11:56
    Invia messaggio privato Profilo  

    Rispondi citando

GenKs » Mer Set 08, 2010 10:08 pm

Ciao Uriel_Science. Sono passato per caso in questo forum e leggendo un pò alcuni topic mi sono imbattuto nel tuo. Devo dire la cosa mi ha incuriosito inizialmente, ma poi ho capito cosa non andava e ora ti spiego il perchè.

In pratica in quel modo tu metti al confronto un unsigned long che è -1 e viene codificato nel seguente modo:

11111111 11111111 11111111 11111111

e un signed long che è 1 e si presenta in questo modo:

00000000 00000000 00000000 00000001

quindi logicamente -1 codificato in quel modo su un tipo unsigned risulta nel confronto maggiore di 1. In questo caso bisogna anteporre un casting al numero di tipo long in questo modo:

Codice: < >
#include <stdio.h>
#include <stdlib.h>
int main(){
   if((long)-1ul> 1l) printf("CIAO");           
   return 0;
}


E vedi come tutto fila logicamente.
In pratica mettendo il casting signed long il MSB(Most Significant bit) viene preso in considerazione per la codifica e quindi risulta un numero negativo a tutti gli effetti nel confronto, se era un unsigned il MSB non veniva contato per segnalare se era un numero negativo o positivo ma serviva per rappresentare, nel complesso dei 32bit, tutti i numeri da 0 a 4,294,967,295.
Puoi accertarti di ciò che sto dicendo con il seguente codice che ho appena scritto:

Codice: < >
#include <stdio.h>

int main(){
   unsigned long x = -1ul, mask = 1 << 31;
   long y = 1l, max = 2147483647;
   int i;

   printf("Y 1l\n");
   for(i=0;i<32;i++,mask>>=1)(mask&y)?printf("1"):printf("0");

   printf("\n\nX -1ul\n");
   mask = 1 << 31;
   for(i=0;i<32;i++,mask>>=1)(mask&x)?printf("1"):printf("0");

   if((long)x > y) printf("\n\nCIAO");
   return 0;
}

GenKs
User Newbie
User Newbie
 
Messaggi: 13
Registrato: 08/09/10 21:42
    Invia messaggio privato Profilo  

    Rispondi citando

Uriel_Science » Gio Set 09, 2010 8:30 am

ciao GenKs,

mi fa piacere che il mio codice abbia attirato la tua attenzione... Wink
Ad ogni modo quelle tecniche le utilizzo per rendere il codice come dire "illeggibile"....

C'è tanta gente che sfruttando l'opensource fa ricchezze... il che mi da altrettanto fastidio..
Vediamo se con queste tecniche riescono ad arricchirsi XD....

Se ne conosci altre fammi sapere XD...

_________________
www.uriel1988.altervista.org


Uriel_Science
Programmatore
Programmatore
 
Messaggi: 285
Registrato: 05/01/09 11:56
    Invia messaggio privato Profilo  

    Rispondi citando

Uriel_Science » Gio Set 09, 2010 10:00 am

Ehi GenKs,

ne ho scritto un'altro di codice XD.....
Codice: < >
#include <stdio.h>
int i;
int main(int argc, char **argv){
   for (;i["**[+i].i({2+5}/2);"];)
      write( 0x00&&(!('-'-'-')),
      i+++"WolfOtakar Forum!\n",
      (0xFE||(!('-'/'-'))));
return 0;
}
}


Ditemi cosa ne pensate! Wink

_________________
www.uriel1988.altervista.org


Uriel_Science
Programmatore
Programmatore
 
Messaggi: 285
Registrato: 05/01/09 11:56
    Invia messaggio privato Profilo  

    Rispondi citando

GenKs » Gio Set 09, 2010 10:25 am

Uriel_Science ha scritto:ciao GenKs,

mi fa piacere che il mio codice abbia attirato la tua attenzione... Wink
Ad ogni modo quelle tecniche le utilizzo per rendere il codice come dire "illeggibile"....

C'è tanta gente che sfruttando l'opensource fa ricchezze... il che mi da altrettanto fastidio..
Vediamo se con queste tecniche riescono ad arricchirsi XD....

Se ne conosci altre fammi sapere XD...


Sinceramente questo metodo di offuscare il codice l'ho conosciuto proprio con il tuo topic e quindi non ne conosco di altri. Oltretutto non ritengo che sia utile e produttivo rendere il codice illeggible. Parlando per me lo reputo interessante solo come studio per capire le varie tecniche, ma nemmeno.
Penso che con l'opensource nell'ambito della programmazione si siano fatti passi da gigante rispetto ad alcuni software closed source. Basta osseravare progetti come MySQL, PHP, APACHE, LINUX che hanno fatto la storia dell'opensource e della rete.
Perchè impedire di conoscere e allo stesso modo di migliorare e migliorarci? Forse egoisticamente stai pensando: io mi sono fatto il mazzo per comprendere e applicare una determinata cosa, perchè devo rendere il lavoro più semplice a qualcunaltro e evitare che si rompa il culo come ho fatto io? Bene se facciamo in questo modo torniamo all'inizio dove la documentazione era quasi inesistente e dove la velocità di produzione del software era lentissima(grandi progetti). Ti consiglio vivamente una lettura della Cattedrale e il Baazar di Eric Raymond.

GenKs
User Newbie
User Newbie
 
Messaggi: 13
Registrato: 08/09/10 21:42
    Invia messaggio privato Profilo  

    Rispondi citando

Uriel_Science » Gio Set 09, 2010 10:29 am

GenKs ha scritto:
Uriel_Science ha scritto:ciao GenKs,

mi fa piacere che il mio codice abbia attirato la tua attenzione... Wink
Ad ogni modo quelle tecniche le utilizzo per rendere il codice come dire "illeggibile"....

C'è tanta gente che sfruttando l'opensource fa ricchezze... il che mi da altrettanto fastidio..
Vediamo se con queste tecniche riescono ad arricchirsi XD....

Se ne conosci altre fammi sapere XD...


Sinceramente questo metodo di offuscare il codice l'ho conosciuto proprio con il tuo topic e quindi non ne conosco di altri. Oltretutto non ritengo che sia utile e produttivo rendere il codice illeggible. Parlando per me lo reputo interessante solo come studio per capire le varie tecniche, ma nemmeno.
Penso che con l'opensource nell'ambito della programmazione si siano fatti passi da gigante rispetto ad alcuni software closed source. Basta osseravare progetti come MySQL, PHP, APACHE, LINUX che hanno fatto la storia dell'opensource e della rete.
Perchè impedire di conoscere e allo stesso modo di migliorare e migliorarci? Forse egoisticamente stai pensando: io mi sono fatto il mazzo per comprendere e applicare una determinata cosa, perchè devo rendere il lavoro più semplice a qualcunaltro e evitare che si rompa il culo come ho fatto io? Bene se facciamo in questo modo torniamo all'inizio dove la documentazione era quasi inesistente e dove la velocità di produzione del software era lentissima(grandi progetti). Ti consiglio vivamente una lettura della Cattedrale e il Baazar di Eric Raymond.


Ti è mai capitato di sentir gente che ha lavorato al tuo posto .... in questo modo puoi dimostrare che sta dicendo il falso...... Wink

_________________
www.uriel1988.altervista.org


Uriel_Science
Programmatore
Programmatore
 
Messaggi: 285
Registrato: 05/01/09 11:56
    Invia messaggio privato Profilo  

    Rispondi citando

GenKs » Gio Set 09, 2010 10:38 am

Uriel_Science ha scritto:
GenKs ha scritto:
Uriel_Science ha scritto:ciao GenKs,

mi fa piacere che il mio codice abbia attirato la tua attenzione... Wink
Ad ogni modo quelle tecniche le utilizzo per rendere il codice come dire "illeggibile"....

C'è tanta gente che sfruttando l'opensource fa ricchezze... il che mi da altrettanto fastidio..
Vediamo se con queste tecniche riescono ad arricchirsi XD....

Se ne conosci altre fammi sapere XD...


Sinceramente questo metodo di offuscare il codice l'ho conosciuto proprio con il tuo topic e quindi non ne conosco di altri. Oltretutto non ritengo che sia utile e produttivo rendere il codice illeggible. Parlando per me lo reputo interessante solo come studio per capire le varie tecniche, ma nemmeno.
Penso che con l'opensource nell'ambito della programmazione si siano fatti passi da gigante rispetto ad alcuni software closed source. Basta osseravare progetti come MySQL, PHP, APACHE, LINUX che hanno fatto la storia dell'opensource e della rete.
Perchè impedire di conoscere e allo stesso modo di migliorare e migliorarci? Forse egoisticamente stai pensando: io mi sono fatto il mazzo per comprendere e applicare una determinata cosa, perchè devo rendere il lavoro più semplice a qualcunaltro e evitare che si rompa il culo come ho fatto io? Bene se facciamo in questo modo torniamo all'inizio dove la documentazione era quasi inesistente e dove la velocità di produzione del software era lentissima(grandi progetti). Ti consiglio vivamente una lettura della Cattedrale e il Baazar di Eric Raymond.


Ti è mai capitato di sentir gente che ha lavorato al tuo posto .... in questo modo puoi dimostrare che sta dicendo il falso...... Wink


Mmm... questa è un ottima idea! Però per quanto riguarda il mondo opensource non penso che sia cosi utile. Se devi rilasciare un codice di dominio pubblico o anche sotto licenza GNU GPL e meglio che lo fai nel modo più comprensibile e pulito possibile.

ps. Ora mi vedo il secondo codice. Wink

EDIT:
Ci sono errori sintattici e semantici.

GenKs
User Newbie
User Newbie
 
Messaggi: 13
Registrato: 08/09/10 21:42
    Invia messaggio privato Profilo  

    Rispondi citando

Uriel_Science » Gio Set 09, 2010 10:47 am

GenKs ha scritto:
Uriel_Science ha scritto:
GenKs ha scritto:
Uriel_Science ha scritto:ciao GenKs,

mi fa piacere che il mio codice abbia attirato la tua attenzione... Wink
Ad ogni modo quelle tecniche le utilizzo per rendere il codice come dire "illeggibile"....

C'è tanta gente che sfruttando l'opensource fa ricchezze... il che mi da altrettanto fastidio..
Vediamo se con queste tecniche riescono ad arricchirsi XD....

Se ne conosci altre fammi sapere XD...


Sinceramente questo metodo di offuscare il codice l'ho conosciuto proprio con il tuo topic e quindi non ne conosco di altri. Oltretutto non ritengo che sia utile e produttivo rendere il codice illeggible. Parlando per me lo reputo interessante solo come studio per capire le varie tecniche, ma nemmeno.
Penso che con l'opensource nell'ambito della programmazione si siano fatti passi da gigante rispetto ad alcuni software closed source. Basta osseravare progetti come MySQL, PHP, APACHE, LINUX che hanno fatto la storia dell'opensource e della rete.
Perchè impedire di conoscere e allo stesso modo di migliorare e migliorarci? Forse egoisticamente stai pensando: io mi sono fatto il mazzo per comprendere e applicare una determinata cosa, perchè devo rendere il lavoro più semplice a qualcunaltro e evitare che si rompa il culo come ho fatto io? Bene se facciamo in questo modo torniamo all'inizio dove la documentazione era quasi inesistente e dove la velocità di produzione del software era lentissima(grandi progetti). Ti consiglio vivamente una lettura della Cattedrale e il Baazar di Eric Raymond.


Ti è mai capitato di sentir gente che ha lavorato al tuo posto .... in questo modo puoi dimostrare che sta dicendo il falso...... Wink


Mmm... questa è un ottima idea! Però per quanto riguarda il mondo opensource non penso che sia cosi utile. Se devi rilasciare un codice di dominio pubblico o anche sotto licenza GNU GPL e meglio che lo fai nel modo più comprensibile e pulito possibile.

ps. Ora mi vedo il secondo codice. Wink


Mi trovi perfettamente allineato alle tue idee... Se il codice deve essere rilasciato sotto GPL è normale che debba essere chiaro... ma poi quando vedi che c'è gente che si vanta di aver "sviluppato" una cosa che hai sviluppato tu.. allora li si che ti girano...

Vediamo quando ci sarà da fare la manutenzione del codice XD ahahah

_________________
www.uriel1988.altervista.org


Uriel_Science
Programmatore
Programmatore
 
Messaggi: 285
Registrato: 05/01/09 11:56
    Invia messaggio privato Profilo  

    Rispondi citando

Uriel_Science » Gio Set 09, 2010 10:48 am

Uriel_Science ha scritto:Ehi GenKs,

ne ho scritto un'altro di codice XD.....
Codice: < >
#include <stdio.h>
int i;
int main(int argc, char **argv){
   for (;i["**[+i].i({2+5}/2);"];)
      write( 0x00&&(!('-'-'-')),
      i+++"WolfOtakar Forum!\n",
      (0xFE||(!('-'/'-'))));
return 0;
}
}


Ditemi cosa ne pensate! Wink


Genks il codice è stato compilato con gcc ed è perfettamente funzionante su linux.... XD

_________________
www.uriel1988.altervista.org


Uriel_Science
Programmatore
Programmatore
 
Messaggi: 285
Registrato: 05/01/09 11:56
    Invia messaggio privato Profilo  

    Rispondi citando

Uriel_Science » Gio Set 09, 2010 10:53 am

Uriel_Science ha scritto:
Uriel_Science ha scritto:Ehi GenKs,

ne ho scritto un'altro di codice XD.....
Codice: < >
#include <stdio.h>
int i;
int main(int argc, char **argv){
   for (;i["**[+i].i({2+5}/2);"];)
      write( 0x00&&(!('-'-'-')),
      i+++"WolfOtakar Forum!\n",
      (0xFE||(!('-'/'-'))));
return 0;
}


Ditemi cosa ne pensate! Wink


Genks il codice è stato compilato con gcc ed è perfettamente funzionante su linux.... XD


Avevi ragione c'era una parentesi graffa in piu...... XD Sorry

_________________
www.uriel1988.altervista.org


Uriel_Science
Programmatore
Programmatore
 
Messaggi: 285
Registrato: 05/01/09 11:56
    Invia messaggio privato Profilo  


Rispondi

Programmazione

Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi