enum i 'logika'

0
enum player {human, computer}

void main()
{
	player player1 = human;
	if (warunek) player1 = !player1;
}

kompilator oczywiście tego nie kompiluje, ale są tylko dwie możliwości dla typu player, więc jeśli nie human to computer; można to zrobić nierozpisując kolejnych warunków?

0

Ale w sensie co chcesz osiągnąć?

0

Mi też tego nie kompiluje. na początek dlatego, że po definicji enuma nie ma średnika, a funkcja main jest typu void, a nie int no i nie ma returna.

Coś takiego możesz zrobić: player1=(player)(!player1);, lub player1=(player)(player1^1); ale tu masz rzutowanie z player na int i z powrotem.
Możesz też tak zrobić:

player1=(player1==human?computer:human);

Bez rzutowania, tylko skrócony if, czy jak to się tam nazywa

Ewentualnie użyj typu bool, albo char i użyj stałych, albo definicji.

0

Nie kompiluje z trzech przyczyn:

  1. brak średnika po enum, ma być enum player {human, computer, cos_jeszcze}; // nie koniecznie musi być tylko 2 wartości
  2. brak definicji warunek
  3. brak jawnej konwersji na typ player, ma być: player1=(player)!player1;
    Ostatnia operacja zmieni:
    human -> computer
    computer -> human
    cos_jeszcze -> human
0

Średnik był w edytorze i warunek też tam był, po prostu nie przepisałem. W każdym razie dzięki za pomoc, enum nauczyłem się dopiero dzisiaj i to mnie tłumaczy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1