em Posted August 11, 2011 Report Posted August 11, 2011 Care crede?i c? este outputul la urm?toarele programe?(Se accepta si depinde sau nu va compila)NU RULATI si postati rezultatele aici, nu despre asta este vorba. 1.#define patrat(x) x*xint main(){ std::cout<<patrat(3+4); return 0;}2.int main(){ int x=16; std::cout<<(x>>2+x>>2); return 0;}3.int main(){ int x=0x1111b; if(x>0xF) std::cout<<"E mare"; else std::cout<<"E mic";}4.int main(){ int n=10,i; for(i=1;i<n;i++); std::cout<<(n-(i++)); return 0;}5.#define false trueint main(){ bool x=false; if(!x) std::cout<<1337; else std::cout<<31337; return 0;}6.int main(){ for(int l=1;1<5;l++) { std::cout<<l++; if(l==10) return l; } return 0;}7.int main(){ int i=0; std::cout<<(++i + ++i + ++i); return 0;}8.int main(){ std::cout<<"\\\nRST\0TEAM"; return 0;}9.int dim(int64_t* a){ return sizeof(a);}int main(){ int64_t a[5]; std::cout<<dim(a);}10.int main(){ while(0) std::cout<<31338; return 0;}Nu derula mai jos de aici. Gânde?te-te la r?spunsuri înainte.LE: Dup? cum a zis ?i Nytro mai bine r?spunsurile prin PM ?i eventualele observa?ii aici. Nu conteaz? dac? nu ?ti?i r?spunsurile la toate întreb?rile, încerca?i! Clasament1. Cmin (7/10)2. Patrunjel3. Nytro4-5. Flubber, nedo6. tiodrsulea a ales s? r?spund? doar la întreb?rile care i-au pl?cut.Dificultate întreb?ri10, 1 (4 corecte)3, 5 (3 corecte)6, 9 (2 corecte)2, 4, 8 (1 corecte)7 (0 corecte) - nimeni nu a r?spuns corect. 2 Quote
Nytro Posted August 11, 2011 Report Posted August 11, 2011 Am trimis PM, cred ca mai bine facem asa decat sa postam raspunsurile.Apoi la final se pot posta toate, pe langa cele corecte.PS: Nu are rost daca incercati sa compilati. 1 Quote
Patrunjel Posted August 11, 2011 Report Posted August 11, 2011 (edited) // EditatRaspunsurile pe PM Edited August 11, 2011 by Patrunjel 1 Quote
cmiN Posted August 11, 2011 Report Posted August 11, 2011 Ai pm.Cu timpul fa un update la rezultate unde pui nickul fiecarui user care a rezolvat si scorul intr-un tabel in primul post . 1 Quote
em Posted August 13, 2011 Author Report Posted August 13, 2011 (edited) R?spunsuri 1. S? analiz?m ce se întâmpl? în etapa de preprocesare. Am rulatg++ -E test1.cpp -o test1P.cppstd::cout << 3+4*3+4;Inmultirea are prioritateR: 192. Semnul + are prioritateR: 03. Amandoua sunt numere in baza 16R: E mare4. for-ul are un ; dupa el. i cand iese de acolo are valoarea 0R: 05. x=true; !x=falseR: 313376. 1<5 (unu < cinci)R: 135797. Mai bine s? lu?m un exemplu mai u?orint i=1;std::cout<<(i + ++i);sauint i=1;std::cout<<(++i + i);Raspunsul ar fi 4 in ambele cazuri! De ce?g++ p7.c -S -masm=intelmov DWORD PTR [esp+28], 1 ; i=1add DWORD PTR [esp+28], 1 ; ++i (prioritate)mov eax, DWORD PTR [esp+28] ; trec in registru sa ma pragatesc de adunareadd eax, eax ; adunarea operanzilorCa s? vede?i dac? a?i în?eles ce am zis încerca?i s? v? gândi?i lastd::cout<<(++i + (++i + ++i));R: 78.\\ -> \\n -> newline\0 -> terminator de stringR: \(linie noua) RST9.Eu trimit ca parametru &a[0] de fapt (un pointer mai exact).R: 8 sau 410.Conditia e falsaR: Felicit?ri participan?ilor. La primul post e ?i un clasament. Edited August 15, 2011 by em mersi kynder Quote
cmiN Posted August 13, 2011 Report Posted August 13, 2011 La 7 nu as fi raspuns niciodata calumea, iar la 8 si 4 am gresit ca idiotu =). GG smecher challenge. Quote
kynder Posted August 15, 2011 Report Posted August 15, 2011 R?spunsuri 7. Mai bine s? lu?m un exemplu mai u?orstd::cout<<(i + ++i);saustd::cout<<(++i + i);Raspunsul ar fi 4 in ambele cazuri! De ce?aici gresesti, raspunsul e 2, presupunand ca i are valoarea initiala 0cat despre cout << (++i + ++i + ... de n ori ++i) actioneaza ca n^2;deci raspunsul la cout << (++i + ++i + ++i) = (3+3+3) = 3^2 = 9; Quote
gigaevil Posted August 15, 2011 Report Posted August 15, 2011 Si eu cred la fel, ca operatorul ++ are prioritate mai mare, si din i=0, i++=>i=1, si dupa aceea i+i = 2.Daca i are initial valoarea 1 atunci raspunsul este 4. Quote
em Posted August 15, 2011 Author Report Posted August 15, 2011 Am f?cut o incurcatur?, pentru c? mi-am scris întâi exemplul pe windows, apoi l-am mutat pe linux s? am gcc cu parametrii. Multumesc de observatie.Dar eu totu?i cred c? orice compilator care respect? standardele ar trebui s? ofere r?spunsul 7 aici (pentru ca întâi se evalueaza primele 2; r?spunsul 9 este la questul suplimentar propus de mine)int i=0;std::cout<<(++i + ++i + ++i);Ai g?sit vreun compilator care s? dea alt rezultat? Quote
nedo Posted August 15, 2011 Report Posted August 15, 2011 (edited) la mine pe code blocks, compiland prin el nu comanda rezultatul este tot 7le: test sa vedem daca pot posta ....Le: ciudat. la "Erorile site-ului nu pot posta ... nu pot sa ii trimit pm lui nytro ... like wtf ??? Edited August 16, 2011 by nedo Quote