Wrednie podchwytliwe zadanie czasami w tej czy innej postaci spotykane na różnych testach ze znajomości języka.
Jaki będzie efekt wykonania poniższego programu:
#include <iostream>
int foo(int x, int y)
{
return x + y;
}
int main()
{
int z, k;
z = 10;
k = foo(z = 20, z += 1);
std::cout << k << std::endl;
}
Najłatwiej zweryfikować korzystając z kompilatora. Na rozważanie przyczyna takie czy innego wyniku nie warto poświęcać zbyt wiele czasu, ponieważ dodanie flagi -Wall rozwiewa wszystkie wątpliwości:
zadanie.cpp: In function ‘int main()’:
zadanie.cpp:14: warning: operation on ‘z’ may be undefined
Zatem poprawna odpowiedź na pytanie: „to zależy od kompilatora, sprzętu, systemu”
Witam, nazywam się Piotr Doniec, w internecie występuję pod nickami 'pejotr' oraz 'doniczek'. Obecnie jestem studentem 3 roku informatyki na Politechnice Warszawskiej na wydziale Elektroniki i Technik Informacyjnych.