Předmět Autor Datum
s C sice nedělám ale předpokládám že to bude asi takhle A=5 B=3 jasne a++ je k A přičti 1 (hodnota…
ERASER 12.01.2012 18:43
ERASER
Díky moc, nebyl jsem si jist tím výpočtem C
hajnis 12.01.2012 18:53
hajnis
ked si ten kod pustis, tak zistis, ze vysledok je 10 :) preco to tak je, sa mi zistovat nechce :)
wam_Spider007 12.01.2012 18:55
wam_Spider007
Jsem si to pustil a vyšlo mi tohle: int _tmain(int argc, _TCHAR* argv[]) { int a = 5; int b = 3; in…
ws79 12.01.2012 19:42
ws79
tedy c=(5+1)+(2)+(6)-(4) c=10 Už to souhlasí i s poslední příspěvkem.
Mihh 12.01.2012 18:59
Mihh
nemas to dobre. .. na konci je -3. len nechapem, preco pri ++a sa to neinterpretuje ako 7 ... co by…
wam_Spider007 12.01.2012 19:03
wam_Spider007
Neznám C, ale něco takového by snad mělo být stejné. Chápu to stejně jako "Eraser". int a = 5; int…
Mihh 12.01.2012 19:24
Mihh
int d = 4; int c = 4; int x = 0; x = d++ - c; cout << x; Proč teda v tomto případě je výsledek 0?…
Revital 12.01.2012 19:29
Revital
int d = 4; int c = 4; int x = 0; x = d++ - c; cout << x << "/" << d; vypis bude 0/5 :) problem of…
wam_Spider007 12.01.2012 19:31
wam_Spider007
Protože 4 - 4 je nula. D = 5 by bylo až při další operaci s D. Teda, alespoň podle toho co znám :-)
ws79 12.01.2012 19:47
ws79
nechapes to rovnako ako eraser. Na zaciatku sa vykonava a++ + --b to znamena, ze sa scita "a" teda…
wam_Spider007 12.01.2012 19:30
wam_Spider007
Ne ne, máte pravdu. Ted jsem si napsal, a vychází to Vaše. Omlouvám se za zmatečnost, díky.
Mihh 12.01.2012 19:33
Mihh
Jinak Visual Studio hodí výsledek 12. To je teda paráda.
Revital 12.01.2012 19:33
Revital
asi zalezi na kompilatore :) neviem ... pouzivam gcc a g++
wam_Spider007 12.01.2012 19:35
wam_Spider007
int a = 4; printf("a=%d\n", ++a); printf("a=%d\n", a++); printf("a=%d\n", a); 4 4 5 a++ je postincre…
bahno - jinde 12.01.2012 20:36
bahno - jinde
a mam to blbe ma tam bejt jenom +6, ne 7, protoze to pricteni 1 se provede az po. Takze deset. Kdyby…
bahno - jinde 12.01.2012 20:40
bahno - jinde
no, takze mame jasno preco to vychadza 10 :D cize a++ (inkrementacia sa spravi az po dokonceni celeh…
wam_Spider007 12.01.2012 20:42
wam_Spider007
V první řadě, bych jemně proplesknul toho, co to napsal...:-)
MaSo 12.01.2012 20:49
MaSo
Toto je asi najlepšia odpoveď, pretože výsledná hodnota je nedefinovaná a závisí od konkrétneho prek…
los 14.01.2012 21:58
los
to je jak curat proti vetru a tvarit sa pri tom hrozne vedecky. poslední
MM.. 14.01.2012 22:10
MM..

s C sice nedělám ale předpokládám že to bude asi takhle

A=5
B=3
jasne

a++ je k A přičti 1 (hodnota v pameti A je stejná)

--b je nejdriv odecti od B 1 (hodnota v pameti B je snizena o jednicku)

a=5 b=2 a=6 b=3
c=(a+1) + (b) + (a) - (b)

tedy c=(5+1)+(2)+(6)-(3)
c=11

Edit: int znamená deklarace

Jsem si to pustil a vyšlo mi tohle:

int _tmain(int argc, _TCHAR* argv[])
{
int a = 5;
int b = 3;

int c = a++ + --b + ++a - ++b;
printf("Vysledek C: %d\n", c); //12

a = 5;
b = 3;

int d = a++;
d += --b;
d += ++a;
d -= ++b;

printf("Vysledek D: %d\n", d); //11

int x;
scanf("%d", &x);
return 0;
}

Nějak se nemohu dopočítat. Z hlavy mi leze také 11, tak proč v tom prvním je 12? Netuší někdo?

nechapes to rovnako ako eraser.

Na zaciatku sa vykonava a++ + --b

to znamena, ze sa scita "a" teda 5 s hodnotou b-1 teda 2 vysledkom je 7 ale hodnota "a" sa zvysi na 6.
potom ide k hodnote 7 pricitanie ++a (co by podla mna malo byt uz 7 ... lebo a uz ma hodnotu 6) a teda medzivysledok by mal byt 14. nakoniec sa odpocita ++b co je vlastne b+1 a teda 3 (lebo medzitym sa hodnota zmenila na 2). 14-3 je potom 11. A tak to pochopil aj eraser.

ale neviem, mozno som z toho uz aj ja uplne mimo.

int a = 4;
printf("a=%d\n", ++a);
printf("a=%d\n", a++);
printf("a=%d\n", a);
4
4
5
a++ je postincrement - nejdriv se hodnota pouzije a pak se zvetsi.
++a je preincrement - hodnota je nejdriv zvetsi a pak pouzije

tj
5+2+7-3=11

Zpět do poradny Odpovědět na původní otázku Nahoru