Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Cudno?(zbog cega nece da se kompajlira)

[es] :: C/C++ programiranje :: Cudno?(zbog cega nece da se kompajlira)

[ Pregleda: 1754 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Buffy
Stanko Culaja
Sipovo, BiH

Član broj: 45310
Poruke: 312
*.teol.net.



Profil

icon Cudno?(zbog cega nece da se kompajlira)27.01.2005. u 12:49 - pre 190 meseci
Zasto se sledeci kod ne moze kompajlirati:
Code:

int main()
{
    int a=10,b=20;
    return a+++++b;
}

Naravno kada stavim zagrade sve radi kako treba:
Code:

int main()
{
    int a=10,b=20;
    return (a++)+(++b);
}

Sto je jos cudnije i sledeci kod radi:
Code:

int main()
{
    int a=10,b=20;
    return a++ + ++b;
}

Zar ima razlike izmedju prvog i treceg primjera i zbog cega prvi primjer nije legalan
kada su u c++ jasno definisani prioriteti operatora???
Iste rezultate pokazuju i VC++ i DEv-C++.
Pozdrav!!!
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.decis.nl.

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Cudno?(zbog cega nece da se kompajlira)27.01.2005. u 14:07 - pre 190 meseci
C FAQ

Citat:
20.20b: Is C a great language, or what? Where else could you write something like a+++++b ?

A: Well, you can't meaningfully write it in C, either.

The rule for lexical analysis is that at each point during a straightforward left-to-right can, the longest possible token is determined, without regard to whether the resulting sequence of tokens makes sense.

The fragment in the question is therefore interpreted as a ++ ++ + b and cannot be parsed as a valid expression.

References: KR1 Sec. A2 p. 179; KR2 Sec. A2.1 p. 192; ISO Sec. 6.1; HS Sec. 2.3 pp. 19-20.
 
Odgovor na temu

Buffy
Stanko Culaja
Sipovo, BiH

Član broj: 45310
Poruke: 312
*.teol.net.



Profil

icon Re: Cudno?(zbog cega nece da se kompajlira)27.01.2005. u 14:45 - pre 190 meseci
Hvala,
ali ja ipak mislim da je greska u kompajleru,jer bi jedan priblizno idealan programiski jezik kao sto je c/c++ morao da rjesi gore navedni izraz.


 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
*.nat-pool.bgd.sbb.co.yu.



Profil

icon Re: Cudno?(zbog cega nece da se kompajlira)27.01.2005. u 15:02 - pre 190 meseci
Nisam pokusao da kompajliram, ali verujem da je sledece parce koda korektno...
int main()
{
int a=10,b=20;
return a+++ ++b;
}
Radi se o parsiranju najduzeg moguceg tokena kao sto je vec pomenuto...
 
Odgovor na temu

Buffy
Stanko Culaja
Sipovo, BiH

Član broj: 45310
Poruke: 312
*.teol.net.



Profil

icon Re: Cudno?(zbog cega nece da se kompajlira)27.01.2005. u 20:27 - pre 190 meseci
Da ispravno je.

 
Odgovor na temu

[es] :: C/C++ programiranje :: Cudno?(zbog cega nece da se kompajlira)

[ Pregleda: 1754 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.