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

Top Posters In This Topic

  • lama

    4

  • Liviu M

    3

Top Posters In This Topic

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

Greseala era a mea. Era long da il inmultesc cu un intreg si in loc sa il lase long vad ca il face int.

Tare faza.

S-a rezolvat cu un cast dar incepusem ca cred ca nu stiu ANSI C.

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.

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.

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • 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