wiek3=wiek1&&wiek2;
Co to wg ciebie robi? W tym miejscu wiek1 oraz wiek2 są niezainicjalizowane, więc cokolwiek by to robiło - nie ma sensu. Wyjaśniając jednak operator &&: to jest operator logiczny więc wiek1 ora wiek2 zostają zrzutowane na bool (konwersja na bool: 0->false, [wartość różna od 0]->true). Następnie operator && daje true jeśli oba argumenty są true, lub daje false w innym przypadku. Następnie wynik operatora jest przypisywany do wiek3 i rzutowany na int na zasadzie false->0, true->1.
if (wiek3<=100)
{
cout<<"Gratulacje! Macie oboje 100 albo i ponad 100 lat, a mianowicie: "<<wiek1<<" i "<<wiek2<<" lat. Gratuluje!\n";
}
Dlaczego w takim razie stosujesz operator mniejszy-lub-równy?
else ((wiek1>>100)&&(wiek2>>100));
{
cout<<"Macie oboje "<<wiek1<<" i "<<wiek2<<" lat. ";
}
Prawdopodobnie chodziło ci o else if. Co to obecnie robi: jeśli nie (wiek3<=100), to wykonuje ((wiek1>>100)&&(wiek2>>100)) (czyli w zasadzie nic nie robi, bo wynik nie jest nigdzie zapisywany);, a cout w linii 24 wykonywany jest bezwarunkowo.