Heh, to nie to jest problemem, panowie. Parzystość można też sprawdzić tak, jak robi to Yedrek -- za pomocą bitowej koniunkcji. Sprawdza, gdy zrobi koniunkcję na wyniku i liczbie 1, to czy dostanie zero (warunek będzie fałszywy), czy inną liczbę (będzie prawdziwy). Koniunkcja zwróci inną liczbę, konkretnie 1, wtedy i tylko wtedy gdy ostatni (najmniej znaczący) bit wyniku będzie równy 1. Czyli gdy wynik będzie nieparzysty. Prosty i elegancki test.
Zobaczcie jednak na pierwsze linijki programu:
#include<iostream>
using namespace std;
main()
{
int a, b; // a i b nie są zainicjalizowane
int wynik = a+b; // ustawia wynik na a+b, ale a i b nie mają jeszcze przypisanych wartości!
// w wyniku jest wartość będąca jakimś losowym śmieciem, może u niego często 0
cout<<"podaj pierwsza liczbe: ";
cin>>a; // dopiero tu wczytuje a
cout<<"\npodaj druga liczbe: ";
cin>>b; // dopiero tu wczytuje b
if(wynik & 1) // w wyniku nadal jest śmieć; wynik nie ma nic wspólnego
// z obecną zawartością zmiennych a i b
...
}
Innymi słowy ustawiasz wynik na sumę a+b zanim jeszcze wczytasz a + b. To tak jakbym Ci powiedział: zapisz na papierze wynik działania operacji a+b. Zmienne typu int to konkretne liczby, więc musiałbyś wpisać konkretną wartość tak jak kompilator C++. Zapytałbyś mnie: no dobra, ale jaką wartość ma a, a jaką b? A ja bym Ci powiedział: nic Ci więcej nie powiem, zapisuj wynik na kartce i daj mi tę kartkę! Napisałbyś więc cokolwiek, np. 666. Natychmiast po otrzymaniu od Ciebie kartki oznajmiłbym, że a = 1, a b = 6. Więc wynik powinien być 7. Ale już nie proszę Cię o przeprowadzenie obliczeń (gdy wartości a i b są znane). Biorę Twój wzięty z sufitu wynik i mówię: cholera, tam jest liczba parzysta! (bo napisałeś 666). A powinna być nieparzysta! (1+6=7)! Ale ten Yedrek [kompilator] jest guuuupi, skoro czegoś tak prostego nie potrafi policzyć! ;)
Bądź więc sprawiedliwy i przemieść z łaski swojej linijkę int wynik = a + b tak, by była wykonywana już PO tym, jak wartości a i b są znane, dobra? Czyli za cinami, bo wartości a i b wczytujesz przez cin.
Radzę Ci też zmienić ustawienia kompilatora. Mój ostrzegł mnie, że podstawiasz do zmiennej wynik obliczeń a + b podczas gdy a i b nie są zainicjalizowane. Dodatkowo, funkcję main deklaruje się na jeden z poniższych sposobów (pomijając nieistotne tutaj rozszerzenia specyficzne dla danej platformy):
int main()
{
...
}
int main(int argc, char* argv[]) // ew. char** argv zamiast char* argv[]
{
..
}
Ty ominąłeś typ zwracanej wartości, co KIEDYŚ można było robić, bo w C (zwykłym!) defaultowało się to do inta.
PS. Użyta przez Ciebie to nie koniunkcja logiczna (operator &&), tylko koniunkcja bitowa (operator &). Jest różnica i proponuję poszperać o tym w necie, bo tak samo masz jeszcze np. alternatywę logiczną (||) i bitową (|).