lama Postat Iunie 29, 2012 Partajează Postat Iunie 29, 2012 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 spre comentariu
Liviu M Postat Iunie 29, 2012 Partajează Postat Iunie 29, 2012 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 spre comentariu
lama Postat Iunie 29, 2012 Autor Partajează Postat Iunie 29, 2012 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 spre comentariu
Liviu M Postat Iunie 29, 2012 Partajează Postat Iunie 29, 2012 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 spre comentariu
lama Postat Iunie 29, 2012 Autor Partajează Postat Iunie 29, 2012 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 spre comentariu
Liviu M Postat Iunie 29, 2012 Partajează Postat Iunie 29, 2012 Cred ca poti face un test - fa o adunare cu ceva mai mare de unsigned int (65535 parca) si vezi ce zice. Link spre comentariu
lama Postat Iulie 2, 2012 Autor Partajează Postat Iulie 2, 2012 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 spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum