2012-08-03 3 views
2

다른 코드에서 빠르게 코드를 복사하고있었습니다. 테스트와 디버깅이 끝나자 나는 정말 이상한 결과를 얻었습니다.수학 연산 중에 "="기호를 삽입하면 어떻게됩니까?

Dim lowerLeft As Integer = x = +y * terrainWidth 

이 반대 :

Dim lowerLeft As Integer = x + y * terrainWidth 

이 실제로 무엇을하고 있던 코드를 다시 비교 한 후, 나는 내 식의 추가 = 내부를 추가 한 것을 깨달았다?

+0

실행하여 확인합니다. – Oded

+2

스위치 옵션 엄격히 켜기 - 지금 당장! –

+1

@Oded 기술적으로 나는 잘 했어. 그래서 나는 계속 이상한 결과를 얻고있다. 다음은 결과입니다 (왼쪽이 이상하고 오른쪽이 예상 됨). http://i50.tinypic.com/206ynhc.png 이제는 모두 공유 꼭지점을 설정했기 때문입니다. 0 (또는 하나의 루프에서 1), 그렇지 않으면; 알아내는 것은 직관적이지 않습니다 (최소한 나에게). – FreeSnow

답변

7

Option Strict On (그리고 일 때)이 경우 컴파일되지 않습니다.

= 표현식 내부는 비교 연산자입니다. 결과는 Boolean입니다.

Dim lowerLeft As Integer 

If x = +y * terrainWidth Then 
    lowerLeft = True ' Converted to 1 
Else 
    lowerLeft = False ' Converted to 0 
End If 

Option Strict On

이 바로이 암시 적 변환을 금지 : 귀하의 경우,이 표현은 동일합니다 의미합니다.

+0

Option Strict가 기본적으로 활성화되지 않은 이유는 무엇입니까? 기본적으로 '켜기'가 아닌가? – FreeSnow

+4

@Dlamk 기본적으로 켜져 있지 않습니다. 신들은 왜 그 이유를 알고 있습니다. 기본적으로이를 사용하지 않기로 한 결정은 큰 실수였습니다. 마이크로 소프트는 여기서 망쳤다. 큰 시간. –

+0

좋아, 나는 내 설정으로 들어가서 기본적으로 'on'으로 설정했다. 좋은 답변 주셔서 감사합니다 :) – FreeSnow

관련 문제