.dsy:it.
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Tech (http://www.dsy.it/forum/forumdisplay.php?forumid=189)
-- io *odio* il C (http://www.dsy.it/forum/showthread.php?threadid=17179)


Posted by cato on 07-02-2005 16:08:

io *odio* il C

Manipolazione di bit
percchazzo non funziona?

cioe la versione da sfigato con somme e prodotti va, quella + geek con gli shift no...


code:
/* converto da 8 -> 32 bit */ //dummy=dummy|RX_buffer[3]; //dummy<<8; dummy=(dummy+RX_buffer[3])*256; //dummy=dummy|RX_buffer[2]; //dummy<<8; dummy=(dummy+RX_buffer[2])*256; //dummy=dummy|RX_buffer[1]; //dummy<<8; dummy=(dummy+RX_buffer[1])*256; //dummy=dummy|RX_buffer[0]; dummy=dummy+RX_buffer[0]; fprintf(stdout, "%x \n", dummy);


dove dummy è un 32bit e gli elementi di RX_buffer da 8bit...

grrr non capisco
code:
#include <stdio.h> unsigned long i=0; int main(int argc,char *argv[]) { i=1; printf("%x-->",i); i<<8; printf("%x",i); }


in questo esempio stupido al posto di ottenere 100 ottengo un laconico 1-->1

__________________

code:
  , ,  | | Me@Flickr  [ov0] | | my photo Blog  {| |} |@| Pallavolo La Nuova Rossa Milano --"-"--| | -------| | "If You Can't Open It, You Don't Own It"


Posted by DeepBlue on 07-02-2005 16:14:


dummy<<8;

i<<8;


Non assegni il valore dei risultati.

Prova con i = i<<8 o con dummy = dummy << 8;

:)

__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~


Posted by cato on 07-02-2005 16:15:

code:
#include <stdio.h> unsigned long i=0; int main(int argc,char *argv[]) { i=1; printf("%x-->",i); i=i<<8; printf("%x",i); }


ma vaff...
che linguaggio di merda

__________________

code:
  , ,  | | Me@Flickr  [ov0] | | my photo Blog  {| |} |@| Pallavolo La Nuova Rossa Milano --"-"--| | -------| | "If You Can't Open It, You Don't Own It"


Posted by jdhoring on 07-02-2005 16:15:

Prova con un espediente banale:

invece di i<<8 scrivi i=i<<8

Riposta se non funza.

[EDIT] alla mia età i riflessi sono + lenti.... cmq il C è un linguaggio stupendo, basta solo usarlo con la testa (= non usare le abbreviazioni... non dimentichiamo che i sorgenti servono a chi li legge per capirli...)

__________________
Furbo è colui che è molto bravo a togliersi da quei guai in cui il saggio non si sarebbe mai cacciato

Il bravo motociclista è come un buon amante: ha equilibrio, giudizio e tempismo.

Nessuna forma d'amore ha tanto rispetto per la libertà dell'altro come l'amicizia.


Posted by cato on 07-02-2005 16:15:

anzi uso <<= che fa figo

__________________

code:
  , ,  | | Me@Flickr  [ov0] | | my photo Blog  {| |} |@| Pallavolo La Nuova Rossa Milano --"-"--| | -------| | "If You Can't Open It, You Don't Own It"


Posted by DeepBlue on 07-02-2005 16:17:

Originally posted by cato
ma vaff...
che linguaggio di merda


Sento le urla di Kernighan e di Ritchie... Stanno venendo a prenderti... :asd:

__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~


Posted by CLod on 07-02-2005 16:19:

usa assembly che è meglio :asd:

__________________
Se il pugno e' chiuso la mano e' vuota. Solo se la mano e' aperta puoi possedere tutto


Posted by cato on 07-02-2005 16:19:

Originally posted by DeepBlue
Non assegni il valore dei risultati.

Prova con i = i<<8 o con dummy = dummy << 8;

:)


:pc: :swear: :pccrash:

ma ca##o mette un warning pareva brutto?

sto iniziando ad apprezzare ADA :look:

__________________

code:
  , ,  | | Me@Flickr  [ov0] | | my photo Blog  {| |} |@| Pallavolo La Nuova Rossa Milano --"-"--| | -------| | "If You Can't Open It, You Don't Own It"


Posted by jdhoring on 07-02-2005 16:23:

Originally posted by cato
anzi uso <<= che fa figo


eccolo... manco avevo finito di scriverlo..

__________________
Furbo è colui che è molto bravo a togliersi da quei guai in cui il saggio non si sarebbe mai cacciato

Il bravo motociclista è come un buon amante: ha equilibrio, giudizio e tempismo.

Nessuna forma d'amore ha tanto rispetto per la libertà dell'altro come l'amicizia.


Posted by recoil on 07-02-2005 16:29:

il problema a volte è proprio del compilatore che rompe le balle con warning sulle conversioni implicite (magari sui puntatori) e poi si dimentica di segnarlare errori come quello o la mancanza del doppio == nelle if e nei cicli, errore che ogni tanto si commette

però il linguaggio è bello

__________________
Sono sempre alla ricerca di curriculum interessanti da segnalare alle società con cui ho contatti. Info in pm


Posted by DeepBlue on 07-02-2005 16:38:

Originally posted by cato
:pc: :swear: :pccrash:

ma ca##o mette un warning pareva brutto?


Se vuoi farti scassare le palle per ogni puntino sulle i, usa nelle opzioni di compilazione " -Wall ", che attiva TUTTI i warning.

Nel tuo caso ti avrebbe detto: "test.c:7: warning: statement with no effect"

Se vuoi sapere qual è il warning esatto che fa questa cosa, spulcia la man, a memoria non lo ricordo :)

__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~


Posted by jdhoring on 07-02-2005 16:39:

Originally posted by recoil
il problema a volte è proprio del compilatore che rompe le balle con warning sulle conversioni implicite (magari sui puntatori)
KUT


e fa pure bene.... sennò il cast a cosa serve?

__________________
Furbo è colui che è molto bravo a togliersi da quei guai in cui il saggio non si sarebbe mai cacciato

Il bravo motociclista è come un buon amante: ha equilibrio, giudizio e tempismo.

Nessuna forma d'amore ha tanto rispetto per la libertà dell'altro come l'amicizia.


Posted by recoil on 07-02-2005 16:45:

Originally posted by jdhoring
e fa pure bene.... sennò il cast a cosa serve?


si certo
ma capita magari di avere un puntatore void e di assegnargli un puntatore a una long word.
il warning c'è ma il programma funziona lo stesso

però ti segnala una cosa del genere (e fa bene) quando manca altre segnalazioni più critiche tipo quella che ho esposto prima. perché non mettono più warnings?

__________________
Sono sempre alla ricerca di curriculum interessanti da segnalare alle società con cui ho contatti. Info in pm


Posted by DeepBlue on 07-02-2005 16:52:

Beh un warning su un cast implicito è sicuramente più utile che uno su un'operazione che non ha effetto.

Anche perché il cast potresti essertelo dimenticato e con i puntatori si rischia sempre di fare casino.


Off-Topic:
sempre a riguardo di casting, se fate una ricerca su it.comp.lang.c troverete un sacco di gente che si incazza a morte quando fate il casting sulle malloc... mi ha sempre divertito questa cosa, soprattutto perché in uni ci tenevano parecchio al casting sulle malloc, anche se di fatto non è strettamente necessario

__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~


Posted by recoil on 07-02-2005 16:56:

Originally posted by DeepBlue
Beh un warning su un cast implicito è sicuramente più utile che uno su un'operazione che non ha effetto.


e la if o il ciclo?
uno mette = al posto di == ed è fregato, magari perde un sacco di tempo a capire come mai

Off-Topic:
sempre a riguardo di casting, se fate una ricerca su it.comp.lang.c troverete un sacco di gente che si incazza a morte quando fate il casting sulle malloc... mi ha sempre divertito questa cosa, soprattutto perché in uni ci tenevano parecchio al casting sulle malloc, anche se di fatto non è strettamente necessario


si ho notato che ci sono delle guerre in quel newsgroup sul casting e anche su altri argomenti.
poi ci sono i puristi dell'ANSI C che ti uccidono se fai qualcosa che non è standard :D

__________________
Sono sempre alla ricerca di curriculum interessanti da segnalare alle società con cui ho contatti. Info in pm


Posted by jdhoring on 07-02-2005 16:58:

Perchè i programmatori giovani non li vogliono... per loro, se compila, allora funziona....

__________________
Furbo è colui che è molto bravo a togliersi da quei guai in cui il saggio non si sarebbe mai cacciato

Il bravo motociclista è come un buon amante: ha equilibrio, giudizio e tempismo.

Nessuna forma d'amore ha tanto rispetto per la libertà dell'altro come l'amicizia.


Posted by DeepBlue on 07-02-2005 17:06:

Originally posted by recoil
poi ci sono i puristi dell'ANSI C che ti uccidono se fai qualcosa che non è standard :D

Eh sì, perché nel manifesto c'è scritto che il ng tratta solo ANSI C.

Infatti spesso ti redirigono su gruppi come it.comp.programmare.win32 e su it.comp.os.linux.development.

__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~


Posted by yeah on 07-02-2005 19:52:


uno mette = al posto di == ed è fregato, magari perde un sacco di tempo a capire come mai

Uno dei problemi più divertenti :)
cmq gcc avvisa: " warning: suggest parentheses around assignment used as truth value" ;)

Il massimo secondo me sono i puntatori a puntatori (o puntatori a puntatori a puntatori...) :crazy:

So non ti piace il C passa a VB, oppure a Pascal :asd:

__________________
?


Posted by DeepBlue on 07-02-2005 19:59:

Originally posted by yeah
piace il C passa a VB, oppure a Pascal :asd:

Nooo il pascal??? perché?? è tanto carino!

Al massimo se non ti piace il C e non vuoi passare a VB, passa a Java....:asd:

__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~


Posted by UZI on 07-02-2005 21:18:

Originally posted by DeepBlue
Nooo il pascal??? perché?? è tanto carino!

Al massimo se non ti piace il C e non vuoi passare a VB, passa a Java....:asd:


ma và!!! voi tutti siete indietro come scimmie da laboratorio!!! il linguaggio di programmazione definitivo è SQUEAK (chi ha fatto etl sà di cosa parlo) :asd: !!!

__________________
those who test will find a bullet in they chest
put ta rest
by a brotha who was hopeless
grow up broke on tha rope of insanity
how many pistols smoking coming from a broken family


Posted by Napolux on 08-02-2005 06:54:

Originally posted by cato

ma vaff...
che linguaggio di merda


Toglietemi tutto ma non il mio C...

UE' IO ADORO IL C.

A volte faccio sogni erotici con il manuale K&R :D

__________________
Napolux.com


Posted by cato on 08-02-2005 15:37:

per la serie io *odio* il C

perche' deve inizializzare le variabili a caso??

code:
void from_raw (unsigned_8 *Buffer, unsigned_32 *Message) { int index; /* converto da 8 -> 32 bit */ memset(Message,0,127); for(index=0;index<128;index++) { M essage[index]=Message[index]|Buffer[4*index+3]; Message[index]<<=8; Message[index]=Message[index]|Buffer[4*index+2]; Message[index]<<=8; Message[index]=Message[index]|Buffer[4*index+1]; Message[index]<<=8; Message[index]=Message[index]|Buffer[4*index]; printf(" %x\n",Message[index]); } }


e mi chiedevo ma perchediamine funziona perfettamente fino alla 31 word e poi va tutto a remengo?

risposta dopo un ora...
memset funziona a byte e non a word :grr: :grr:

__________________

code:
  , ,  | | Me@Flickr  [ov0] | | my photo Blog  {| |} |@| Pallavolo La Nuova Rossa Milano --"-"--| | -------| | "If You Can't Open It, You Don't Own It"


Posted by jdhoring on 08-02-2005 15:42:

Perchè è meglio inizializzare a caso che a cazzo (Icome fa il COBOL ad esempio)... almeno il fatto che te le devi inizializzare tu e sempre è chiaro e limpido...

__________________
Furbo è colui che è molto bravo a togliersi da quei guai in cui il saggio non si sarebbe mai cacciato

Il bravo motociclista è come un buon amante: ha equilibrio, giudizio e tempismo.

Nessuna forma d'amore ha tanto rispetto per la libertà dell'altro come l'amicizia.


Posted by yeah on 08-02-2005 19:52:


perche' deve inizializzare le variabili a caso??


Non afferro. Devi inizializzare solo le variabili il cui primo utilizzo non è un assegnamento.

code:
memset(Message,0,127);

Penso tu stia saltando un byte, visto che nel for() ne usi 128

__________________
?


Posted by UZI on 09-02-2005 10:00:

il C sta ad un programmatore come il bushido sta ad un samurai

__________________
those who test will find a bullet in they chest
put ta rest
by a brotha who was hopeless
grow up broke on tha rope of insanity
how many pistols smoking coming from a broken family


All times are GMT. The time now is 11:29.
Show all 25 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.