unsigned, signed max ertek

Andras Tantos andras_tantos at yahoo.com
Tue Mar 16 23:30:57 CET 2004


const inline int maxof(int a) { return MAX_INT; }
const inline unsigned int maxif(unsigned int a) { return MAX_UINT; }
const inline short maxof(short a) { return MAX_SHORT; }
const inline unsigned short maxof(short a) { return MAX_USHORT; }

stb.

int Var;
short NewVar;
if (Var > maxof(NewVar)) {
    printf("Overflow error!");
    exit(1);
}
NewVar = Var;

Leven C++-ban a fuggveny 'signature'-e a parameter tipusokat is tartalmazza,
ahol hasznalod, mindig csak a megfelelo maxof for railleni a hivasra. Az
inline miatt meg a fordito berakja a hivast, es rajon, hogy a visszateresi
ertek konstans, tehat az egesz egy ertekadassa egyszerusodik.

Udv,
Tantos Andras
http://andras.tantos.homedns.org

----- Original Message ----- 
From: "Fuzesi Arnold" <arno at externet.hu>
To: <elektro at tesla.hu>; <avr-hun at x-dsl.hu>
Sent: Tuesday, March 16, 2004 12:47 PM
Subject: Re: unsigned, signed max ertek


> De van EC++.
>
> Abban hogy tudom megoldani?
>
> Arnold
> ----- Original Message ----- 
> From: "Andras Tantos" <andras_tantos at yahoo.com>
> To: <elektro at tesla.hu>; <avr-hun at x-dsl.hu>
> Sent: Tuesday, March 16, 2004 9:41 PM
> Subject: Re: unsigned, signed max ertek
>
>
> > Hmm... C++-ban siman meg lehet csinalni. Nincs C++ fordito arra a
procira,
> > amit nyuzol? Vagy legalabb egy ec++?
> >
> > Udv,
> > Tantos Andras
> > http://andras.tantos.homedns.org
> >
> > ----- Original Message ----- 
> > From: "Fuzesi Arnold" <arno at externet.hu>
> > To: <elektro at tesla.hu>; <avr-hun at x-dsl.hu>
> > Sent: Tuesday, March 16, 2004 11:43 AM
> > Subject: Re: unsigned, signed max ertek
> >
> >
> > > Kosz, tudom, de azzal van gondom, hogy allandoan kutakodnom kell
milyen
> is
> > > volt a valtozo tipusa amire alkalmazni akarom. Elegge idegorlo...Kezd
> > > bazinagy lenni a forras, es rengeteg idom elmegy a keresgelessel.
> > >
> > > Arnold
> > > ----- Original Message ----- 
> > > From: "Andras Tantos" <andras_tantos at yahoo.com>
> > > To: <elektro at tesla.hu>; <avr-hun at x-dsl.hu>
> > > Sent: Tuesday, March 16, 2004 8:39 PM
> > > Subject: Re: unsigned, signed max ertek
> > >
> > >
> > > > Elvben a limits.h-ban benne vannak ezek, es C szabvany rogziti a
> > nevuket.
> > > > INT_MIN, INT_MAX stb.
> > > >
> > > > Udv,
> > > > Tantos Andras
> > > > http://andras.tantos.homedns.org
> > > >
> > > > ----- Original Message ----- 
> > > > From: "Fuzesi Arnold" <arno at externet.hu>
> > > > To: <elektro at tesla.hu>; <avr-hun at x-dsl.hu>
> > > > Sent: Tuesday, March 16, 2004 11:18 AM
> > > > Subject: unsigned, signed max ertek
> > > >
> > > >
> > > > > Tudtok egyszeru megoldast:
> > > > >
> > > > > Egy makro kellene, ami megadja az adott egesz tip. unsigned
valtozo
> > > > > (char,int,
> > > > > long  longlong stb) max erteket?
> > > > >
> > > > > Ami hirtelen eszembe jutott, az ezer hibalehetoseget rejt, nem
> korrekt
> > > > stb.
> > > > > #define MAX_UVAL(val) (val|0xffffffff)
> > > > > #define MAX_UVAL(val) (val|(~val))
> > > > > #define MAX_UVAL(val) ((val&0)-1)
> > > > > #define MAX_UVAL(val) ( ((1<<sizeof(val))*8)-1)
> > > > >
> > > > > Olyat szeretnek ami nem dob hatast, ha mondjuk long-ot kap. De
amugy
> > meg
> > > > > korrektul mukodik.
> > > > > Szoval jo lenne, ha maga tudna eldonteni, nem elore "bedrotoznam",
> > hogy
> > > > > melyik sizeof(val)
> > > > > ertekhez milyen max ertek tartozik.  Vagy ez a legkezenfekvobb?
> > > > > Ugy erzem, hogy kenyes a tema...
> > > > >
> > > > > Illetve hogy lehetne ezt atszerkeszteni, hogy unsignedre is, meg
> > > signedre
> > > > is
> > > > > mukodjon rendesen?
> > > > > Elobbinek 65535-ot, utobbinak 32767-et adjon ertekul. (Allandoan
> > > > megszivom,
> > > > > hogy signedre is hasznalom)
> > > > >
> > > > > Ugy szeretnem, hogy ne legyen meg csak veletlenul se fordito
> fuggo...
> > > > >
> > > > >
> > > > > Tippek?
> > > > > Arnold
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > >
> >
> >
> >
> >
>
>
>



More information about the Elektro mailing list