Jump to content
ELFORUM - Forumul electronistilor

long int in PICC de la Hi-tech


lama

Recommended Posts

SalutPana acum m-am descurcat cu int si char.Azi am nevoie de un long intsi surpriza nu vrea sa mi-l initializeze log( mi-l face unsigned int)Am citit manualul care zice sa adaug si si nimicLong-ul meu e unsigned int.A mai patit cineva asa ceva?

Link to comment
  • Replies 6
  • Created
  • Last Reply

Cred ca trebuie sa umbli (in MPLAB) pe la setarile proiectului, sectiunea compiler/linker (nu stiu exact unde sunt si n-am nici un MPLAB la dispozitie) si sa alegi lungimea datelor. Din cate stiu eu, double e implicit pe 24 de biti si probabil nici long-ul nu trece de astia.

O alta varianta, daca nu-ti trebuie chiar 32 de biti, e sa folosesti short long (vezi si fisierul ala limits.h):

 

#define	SHRTLONG_MAX	8388607			/* max value of short long */#define	SHRTLONG_MIN	(short long)-8388608	/* min value of a short long */

LE In manualul de la versiunea 9.82 nu exista tipul de data long int.

Link to comment

Rezultatul incape cumva in 16 biti (adica ai inmultit un long mic cu un int mic)? Ca daca da, sunt sanse sa fie un efect al optimizarilor compilerului. Daca nu, n-am idee.

Mai mult ca sigur ca e optimizatorul.Ajunge el la concluzia ca asa e bine.Noroc cu cast-ul ca il aduce pe calea cea buna.
Link to comment

Cred ca poti face un test - fa o adunare cu ceva mai mare de unsigned int (65535 parca) si vezi ce zice.

Inmultire de doi unsigned int cu rezultatul pus intr-un long.La final pare ca il duce la unsigned int.In C era functia ctype dar vad ca aici nu e implementat.Deci optimizatorul .....
Link to comment

Archived

This topic is now archived and is closed to further replies.




×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines