Toon posts:

[C++] Evaluatie van +-*/

Pagina: 1
Acties:

Verwijderd

Topicstarter
Als ik hetvolgende heb in c++:
C++:
1
2
3
4
int i = 1;
float f = 1.2;
double d = 2.5;
long l = 3L;


Hoe wordt dit geevalueerd ... Ik bedoel daarmee... Als ik devolgende bewerkingen doe, hoe denkt de C++ compiler hierover?

C++:
1
2
3
4
 i * f;
d * f;
l * i;
........


Converteert ie eerst alle getallen naar de 'hoogste bitwaarde'? en dan het resultaat naar de 'laagste bitwaarde'? (bitwaarde bedoel ik het aantal bits van die variable -> int 2, long 4, double 8 etc...) Of degradeerd em alles eerst naar de 'laagste bitwaarde' & rekent daarmee verder?

Kan er mij daar iemand duidelijkheid in verschaffen?

  • McFizban
  • Registratie: Juli 2001
  • Laatst online: 20-08 17:55

McFizban

Hackito ergo sum.

Als je een wiskundige bewerking wilt doen met bijv. een int en een float zal de compiler eerst de int naar float promoveren en daar mee verder rekenen.
Er zal dus geen informatie verloren gaan.

Over het algemeen zal de compiler de waarde van het beperktere type converteren naar het andere type. Let er wel op hoe je het weer opslaat.

[ Voor 31% gewijzigd door McFizban op 13-11-2003 07:30 ]

Haardware: meuk die zo oud is dat het alleen nog nuttig is voor in de openhaard.


Verwijderd

http://www.cs.wright.edu/~rrea/typeconv.html
helpt misschien dit kostte me ongeveer 10 secs op google dus de rest van je antwoord zal er ook wel te vinden zijn.

Verwijderd

Topicstarter
Thx Zoepnek ;)

en ja ... Als je weet waarop je moet zoeken dan is het gemakkelijk om iets te zoeken (ik zocht dus steeds op "C++ evaluate mathematical expressions" en consorten).

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Verwijderd schreef op 13 november 2003 @ 05:37:
Converteert ie eerst alle getallen naar de 'hoogste bitwaarde'? en dan het resultaat naar de 'laagste bitwaarde'? (bitwaarde bedoel ik het aantal bits van die variable -> int 2, long 4, double 8 etc...)
Maak van bits even bytes, anders kunnen we 0..3 in een int stoppen en 0..255 in een double ;) (de unsigned versies)
Trouwens die waardes die je noemt staan niet vast, alleen het volgende is vastgelegd in ANSI C++, geplukt uit de BCB helpfile.
ANSI does not dictate the sizes or internal representations of these types, except to indicate that short, int, and long form a nondecreasing sequence with "short <= int <= long." All three types can legally be the same. This is important if you want to write portable code aimed at other platforms.
Verder zijn in de meeste ontwikkelomgevingen ints 32bit/4byte (GCC/BCB/VC), anders kunnen we slechts van -32768 tot 32767in een int stoppen.

  • DolleDries
  • Registratie: Oktober 2000
  • Laatst online: 19-08 19:25
Hmm..zal ook een hoop afhangen van het type waar je het resultaat in stopt.. voor de rest.. kijk inderdaad eens naar google.. ;)

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 00:47
Glimi schreef op 13 november 2003 @ 09:56:
....anders kunnen we slechts van -32768 tot 32767 in een int stoppen.
Wat bij bijvoorbeeld VB het geval is, omdat deze geen unsigned types kent.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

farlane schreef op 13 november 2003 @ 10:45:
[...]
Wat bij bijvoorbeeld VB het geval is, omdat deze geen unsigned types kent.
Het ging over het formaat, niet over de signing :)

Professionele website nodig?

Pagina: 1