2017-04-24 6 views
-4

저는 현재 간단한 주사위 게임을 코딩하고 있으며 혼란스럽고 혼란스러운 오류가 발생했습니다. 암호.CS0019 t 연산자 '+ ='는 'int'및 'bool'타입의 피연산자에 적용 할 수 없습니다.

foreach (var die in Dice.rolls) 
{ 
    Console.WriteLine(die.ToString()); 
} 
if (player.score += score >= goal) 
{ 
    playing = false; 
    Console.WriteLine("{0} has won the game!", player.name); 
    Console.WriteLine("Please press any key to end the game"); 
    Console.ReadKey(); 
} 
else 
{ 
    player.score += score; 
} 

난 데 문제는 라인이 : 말해 오류를 던지고있다

if (player.score += score >= goal) 

내가있는 if 문에서 INT 년대와 부울의하지만 모든 변수에 사용할 수 없습니다 int 's. 또한 여기 몇 줄 :

player.score += score; 

어떤 오류가 있습니까? 아니요.

+0

자세한 정보를 찾아 볼 수 있습니다. 먼저 점수를 더한 다음 비교를하십시오. 컴파일러에게 말하는 것은 score> = goal을 해결하고이를 player.score에 추가하는 것입니다. 따라서 오류가 발생합니다. –

답변

3

작업 우선 순위가 올 수 있습니까? 보십시오,이 날 것으로 보인다

if ((player.score += score) >= goal) 

하지만 당신은해야 하나 :

player.score += score; 
if (player.score >= goal) 

또는 b) 라인을 변경 :

if (player.score + score > goal) 
을 는) 두 라인으로 그것을 깰

그 자체로 의도적 인 것일 수도 있지만, player.score는> = goal이 아닌 경우 score가 두 번 추가되고 if의 일부로 추가 된 다음 else의 본문으로 추가됩니다. .

+0

그래, 운영의 우선 순위 였어, 건배 친구 – newbie123

+0

두 줄로 나누는 것이 훨씬 뚜렷하다. 한 줄에 변수를 증가시키고 확인하는 간결한 코드를 쓰려고하면 앞으로 버그가 발생할 가능성이 있습니다. – AlainD

1

운영자 우선 순위 문제입니다. 비교 연산자> =가 더 높은 우선 순위를 가지므로 본질적으로 부울 비교 score >= goal의 결과에 따라 player.score을 증가 시키려고합니다.

괄호를 사용하여 표현식을 수정하거나 표현식을 단순화 할 수 있습니다 (예 :

player.score += score; 
if (player.score >= goal) 

당신은 당신은 같은 줄에 두 작업을 수행 할 수 없습니다 여기 https://msdn.microsoft.com/en-us/library/2bxt6kc4.aspx