Jump to content
em

[Easy] C++ quest

Recommended Posts

Posted

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*x
int 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 true
int 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! :)

Clasament

1. Cmin (7/10)

2. Patrunjel

3. Nytro

4-5. Flubber, nedo

6. tiodr

sulea a ales s? r?spund? doar la întreb?rile care i-au pl?cut.

Dificultate întreb?ri

10, 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.

  • Upvote 2
Posted

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.

  • Upvote 1
Posted (edited)

R?spunsuri

1. S? analiz?m ce se întâmpl? în etapa de preprocesare. Am rulat

g++ -E test1.cpp -o test1P.cpp


std::cout << 3+4*3+4;

Inmultirea are prioritate

R: 19

2. Semnul + are prioritate

R: 0

3. Amandoua sunt numere in baza 16

R: E mare

4. for-ul are un ; dupa el. i cand iese de acolo are valoarea 0

R: 0

5. x=true; !x=false

R: 31337

6. 1<5 (unu < cinci)

R: 13579

7.

Mai bine s? lu?m un exemplu mai u?or


int i=1;
std::cout<<(i + ++i);

sau


int i=1;
std::cout<<(++i + i);

Raspunsul ar fi 4 in ambele cazuri! De ce?

g++ p7.c -S -masm=intel


mov DWORD PTR [esp+28], 1 ; i=1
add DWORD PTR [esp+28], 1 ; ++i (prioritate)
mov eax, DWORD PTR [esp+28] ; trec in registru sa ma pragatesc de adunare
add eax, eax ; adunarea operanzilor

Ca s? vede?i dac? a?i în?eles ce am zis încerca?i s? v? gândi?i la


std::cout<<(++i + (++i + ++i));

R: 7

8.

\\ -> \

\n -> newline

\0 -> terminator de string

R: \(linie noua) RST

9.

Eu trimit ca parametru &a[0] de fapt (un pointer mai exact).

R: 8 sau 4

10.

Conditia e falsa

R:

Felicit?ri participan?ilor. La primul post e ?i un clasament.

Edited by em
mersi kynder
Posted
R?spunsuri

7.

Mai bine s? lu?m un exemplu mai u?or


std::cout<<(i + ++i);

sau


std::cout<<(++i + i);

Raspunsul ar fi 4 in ambele cazuri! De ce?

aici gresesti, raspunsul e 2, presupunand ca i are valoarea initiala 0

cat 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;

Posted

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?

Posted (edited)

la mine pe code blocks, compiland prin el nu comanda rezultatul este tot 7

le: 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 by nedo

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...