http://www.pronix.de -> Forum -> Knobelecke

Forum: Knobelecke

Moderatoren: broesel, juergen

Thema: [EDIT] - Eine kleine Spielerei mit dem Operator +

Die Fragen:
Ist der Quellcode lauffähig.

Wenn ja, wie lautet der Wert von c?

Was stört bei dem Ausdruck?

Bitte vor dem compilieren sich selbst beantworten!



#include <stdio.h>
int main (void)
{
    int a = 5, b = 8, c = 0;
    c = a+++b;
    c = a+++b;
    c = a+++b;
    printf ( "\n  %i +  %i =  %i\n", a, b, c);
    printf ( "\n\n\n");
}


Viel Spass dabei

Terep
 
mal so drauflos getüftelt würde ich sagen, dass es nicht lauffähig ist, da der compiler nicht wissen kann, ob es jetzt a++ oder ++b ist... denn beides ist möglich.

falls es doch möglich wäre, so wäre c am schluß 16, da dies das gleiche wäre wie:

for(int i=0; i<3; i++)
c=(a++)+b;

was gleich wäre wie:

14 = 6 + 8
15 = 7 + 8
16 = 8 + 8

aber eben meine vermutung ist das der compiler verwirrt ist und irgend eine fehler meldung ausgibt, falls nicht, dann wird speichermüll ausgegeben =b

gruß
ITEDVO

[EDIT]: wobei, es kann aber auch sein das eben die priorität (links-->rechts) eintrifft. das würde dann heißen: (a++)+b was dann bedeuten würde dass c am schluss = 16 ist =b

--
Was nicht ist, kann noch werden =b
rock by vote or play by vote
<a href="http://www.selfmades.eu" target="blank"><img src="http://selfmades.eu/Clanwerbung/LinkUs/ITEDVO.jpg" alt="Clan Selfmades" title="Clan Selfmades"></a>

 
hab ich nun recht oder hab ich nicht recht?

--
Was nicht ist, kann noch werden =b
rock by vote or play by vote
<a href="http://www.selfmades.eu" target="blank"><img src="http://selfmades.eu/Clanwerbung/LinkUs/ITEDVO.jpg" alt="Clan Selfmades" title="Clan Selfmades"></a>

 

Re: Eine kleine Spielerei mit dem Operator +

Martin Conrad (webmaster) am 23.06.2010 um 12:45

Zitat:

hab ich nun recht oder hab ich nicht recht?


Nö, du lässt ne Kleinigkeit ausser Acht...

Bis denne

Martin

--
0xC0FFEE

 
Ich erinnere mich an Broesels Quiz, nachdem aus a+++b a++ + b wird.
Demnach müsste folgendes passieren.
#include <stdio.h>
int main (void)
{
 int a = 5, b = 8, c = 0;
 c = a+++b; // c = 5 + 8
 c = a+++b; // c = 6 + 8
 c = a+++b; // c = 7 + 8
 printf ( "\n  %i +  %i =  %i\n", a, b, c); // a==8, b==8, c==15
 printf ( "\n\n\n");
}

--
To follow the path: look to the master, follow the master, walk with the master, see through the master, become the master.