.dsy:it. Pages (2): [1] 2 »
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


All times are GMT. The time now is 08:05. Pages (2): [1] 2 »
Show all 25 posts from this thread on one page

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