오류, 버그, 질문 - 페이지 416 1...409410411412413414415416417418419420421422423...3184 새 코멘트 Dmitriy Skub 2011.06.15 20:53 #4151 Yedelkin : 변수가 bool 유형 인 경우 default : return ( false ) 을 지정하는 요점은 무엇이며 기본적으로 둘 다 switch 문에서 사용되는 두 개의 값만 가지고 있습니까? 즉, 기본 레이블은 전혀 실행되지 않아야 합니다. PS 1. 또한 접근 방식을 따르면 optional의 기본 레이블이 필수가 됩니다. 2. 두 버전 모두에서 break 문은 불필요합니다. switch 문 은 bool_var 를 정수 유형으로 변환합니다. 그리고 컴파일러는 이 변수에 두 개의 값이 있다는 것을 알 필요가 없습니다. 그는 알고리즘에 대한 논리적 분석을 수행하지 않습니다. Yedelkin 2011.06.15 20:57 #4152 Interesting : 한 가지 더 잊어버렸습니다. 모든 변수는 잘못된 값을 가질 수 있거나 초기화되지 않을 수 있습니다(값 "쓰레기" 사용)... 나는 잊지 않았다. 따라서 내 예에서는 변수가 초기화되었습니다. 그럼에도 불구하고 컴파일러에서 오류가 발생했습니다. bool bool_var=- 1의 예는 매우 올바르지 않습니다. 직접 참조: bool bool_var=- 1 ; void OnStart () { Print ( "bool_var=" ,bool_var); } [삭제] 2011.06.15 20:59 #4153 Dima_S : switch 문 은 bool_var 를 정수 유형 으로 변환합니다. 그리고 컴파일러는 이 변수에 두 개의 값이 있다는 것을 알 필요가 없습니다. 그는 알고리즘에 대한 논리적 분석을 수행하지 않습니다. 그런데 부울을 사용하면 초기화되지 않은 변수나 값이 -1인 변수가 true/false로 변환되는 좋은 옵션이 있습니다. 물론 변수를 int로 명시적으로 선언하면 발생하지 않습니다. 예델킨 : 나는 잊지 않았다. 따라서 내 예에서는 변수가 초기화되었습니다. 그럼에도 불구하고 컴파일러에서 오류가 발생했습니다. bool bool_var=- 1인 예는 매우 잘못되었습니다. 직접 참조: 이미 확신이 있어서 삭제했습니다. 그러나 이것은 말하자면 임의의 운입니다(언어의 특징으로 간주). 그러나 스위치 블록에서 가능한 오류를 처리할 때 컴파일러는 입력으로 무엇을 어떻게 입력하는지 파악할 필요가 없습니다. 이것이 컴파일러가 이를 경고가 아닌 오류로 간주하는 이유입니다. Yedelkin 2011.06.15 21:02 #4154 Dima_S : 그리고 컴파일러는 이 변수에 두 개의 값이 있다는 것을 알 필요가 없습니다. 그는 알고리즘에 대한 논리적 분석을 수행하지 않습니다. 즉 컴파일러가 열거의 값 목록과 총 수를 고려하지 않는다고 말하고 싶습니까? Yedelkin 2011.06.15 21:09 #4155 Interesting : 그러나 스위치 블록에서 가능한 오류를 처리할 때 컴파일러는 입력으로 무엇을 어떻게 입력하는지 파악할 필요가 없습니다. 이것이 컴파일러가 이를 경고가 아닌 오류로 간주하는 이유입니다. 중간 결론은 다음과 같습니다. "enumeration+switch" 바인딩을 사용하면 기본 레이블 사용이 필수 가 됩니까? Dmitriy Skub 2011.06.15 21:11 #4156 Yedelkin : 1. bool은 어쨌든 "정수 유형"입니다. 또는 스위치에 이전 정수 유형으로의 캐스트가 있다고 말하고 싶습니다. 2. 컴파일러가 열거의 값 목록과 그 총 수를 고려하지 않는다고 말하고 싶습니까? 1. bool은 1바이트의 정수형입니다. 캐스트는 int 로 이동합니다. 맞습니다. 2. 여기에서도 모든 것이 올바르게 작성되었습니다. 유일한 경우는 열거형이 아니라 조건부 분기에 대한 레이블일 뿐입니다. Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long www.mql5.com Основы языка / Типы данных / Целые типы / Типы char, short, int и long - Документация по MQL5 Yedelkin 2011.06.15 21:22 #4157 Dima_S : 1. bool은 1바이트의 정수형입니다. 캐스트는 int 로 이동합니다. 맞습니다. 핸드북에 따르면 bool은 정수와 다른 특수 유형입니다. 따라서 잘못된 설명을 제거했습니다. 나는 논쟁하지 않을 것이지만 - 특별하지는 않습니다. 디마_S : 예델킨 : 즉 컴파일러가 열거의 값 목록과 총 수를 고려하지 않는다고 말하고 싶습니까? 2. 여기에서도 모든 것이 올바르게 작성되었습니다. 유일한 경우는 열거형이 아니라 조건부 분기에 대한 레이블일 뿐입니다. 케이스 레이블이 아니라 열거(bool 유형을 가장 작은 것으로 간주)를 의미했습니다. 다음은 동일한 컴파일 오류가 있는 예입니다. enum Triple { err=- 1 , no = 0 , hay= 1 }; Triple triple_var=err; Triple Test( void ) { switch (triple_var) { case err: return (err); case no: return (no); case hay: return (hay); //default:return(hay); } } void OnStart () { Test(); } 따라서이 예와 관련하여 질문을 반복하겠습니다. 컴파일러가 Triple 열거의 값 목록과 총 수를 고려하지 않는다는 말입니까? switch 문에 사용된 열거형의 모든 값이 있습니다. [삭제] 2011.06.15 21:31 #4158 Yedelkin : 중간 결론은 다음과 같습니다. "enumeration+switch" 바인딩을 사용하면 기본 레이블 사용이 필수 가 됩니까? 이 옵션을 상상해 보십시오(그런데 값 3은 값의 명시적 선언과 함께 작동하지 않지만 -1은 쉽게 작동합니다). 그러나 변수의 명시적 초기화가 없으면 값이 인덱스 0을 가진 값과 동일하다는 것을 나타냅니다(여기서 모든 것이 고려됨). 기본 옵션이 제외된 경우 함수는 무엇을 반환해야 합니까? ENUM_CHART_MODE ChartMode = - 1 ; string Test() { switch (ChartMode) { case 0 : return ( "Bars" ); break ; case 1 : return ( "CANDLES" ); break ; case 2 : return ( "LINE" ); break ; default : return ( "Unknown" ); } } void OnStart () { Comment (Test()); } Andrey Dik 2011.06.15 21:32 #4159 Yedelkin : 중간 결론은 다음과 같습니다. "enumeration+switch" 바인딩을 사용하면 기본 레이블 사용이 필수 가 됩니까? 예, return()에서 무언가를 반환해야 하는 경우. 또는 적어도 컴파일러가 함수가 무언가를 반환할 것이라고 확신할 수 있도록: bool bool_var= false ; bool Test( void ) { switch (bool_var) { case true : return ( true ); case false : return ( false ); } return ( false ); //хотя до сюда ни когда не дойдем, но прописать надо } void OnStart () { Test(); } Yedelkin 2011.06.15 21:38 #4160 과학에 대해 모두 감사합니다! 마지 못해 추가 라인을 삽입해야합니다 :) 1...409410411412413414415416417418419420421422423...3184 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
변수가 bool 유형 인 경우 default : return ( false ) 을 지정하는 요점은 무엇이며 기본적으로 둘 다 switch 문에서 사용되는 두 개의 값만 가지고 있습니까? 즉, 기본 레이블은 전혀 실행되지 않아야 합니다.
PS 1. 또한 접근 방식을 따르면 optional의 기본 레이블이 필수가 됩니다.
2. 두 버전 모두에서 break 문은 불필요합니다.
switch 문 은 bool_var 를 정수 유형으로 변환합니다.
그리고 컴파일러는 이 변수에 두 개의 값이 있다는 것을 알 필요가 없습니다. 그는 알고리즘에 대한 논리적 분석을 수행하지 않습니다.
한 가지 더 잊어버렸습니다. 모든 변수는 잘못된 값을 가질 수 있거나 초기화되지 않을 수 있습니다(값 "쓰레기" 사용)...
나는 잊지 않았다. 따라서 내 예에서는 변수가 초기화되었습니다. 그럼에도 불구하고 컴파일러에서 오류가 발생했습니다.
bool bool_var=- 1의 예는 매우 올바르지 않습니다. 직접 참조:
switch 문 은 bool_var 를 정수 유형 으로 변환합니다.
그리고 컴파일러는 이 변수에 두 개의 값이 있다는 것을 알 필요가 없습니다. 그는 알고리즘에 대한 논리적 분석을 수행하지 않습니다.
그런데 부울을 사용하면 초기화되지 않은 변수나 값이 -1인 변수가 true/false로 변환되는 좋은 옵션이 있습니다.
물론 변수를 int로 명시적으로 선언하면 발생하지 않습니다.
나는 잊지 않았다. 따라서 내 예에서는 변수가 초기화되었습니다. 그럼에도 불구하고 컴파일러에서 오류가 발생했습니다.
bool bool_var=- 1인 예는 매우 잘못되었습니다. 직접 참조:
이미 확신이 있어서 삭제했습니다. 그러나 이것은 말하자면 임의의 운입니다(언어의 특징으로 간주).
그러나 스위치 블록에서 가능한 오류를 처리할 때 컴파일러는 입력으로 무엇을 어떻게 입력하는지 파악할 필요가 없습니다. 이것이 컴파일러가 이를 경고가 아닌 오류로 간주하는 이유입니다.
그리고 컴파일러는 이 변수에 두 개의 값이 있다는 것을 알 필요가 없습니다. 그는 알고리즘에 대한 논리적 분석을 수행하지 않습니다.
즉 컴파일러가 열거의 값 목록과 총 수를 고려하지 않는다고 말하고 싶습니까?
그러나 스위치 블록에서 가능한 오류를 처리할 때 컴파일러는 입력으로 무엇을 어떻게 입력하는지 파악할 필요가 없습니다. 이것이 컴파일러가 이를 경고가 아닌 오류로 간주하는 이유입니다.
1. bool은 어쨌든 "정수 유형"입니다. 또는 스위치에 이전 정수 유형으로의 캐스트가 있다고 말하고 싶습니다.
2. 컴파일러가 열거의 값 목록과 그 총 수를 고려하지 않는다고 말하고 싶습니까?
1. bool은 1바이트의 정수형입니다. 캐스트는 int 로 이동합니다. 맞습니다.
2. 여기에서도 모든 것이 올바르게 작성되었습니다. 유일한 경우는 열거형이 아니라 조건부 분기에 대한 레이블일 뿐입니다.
1. bool은 1바이트의 정수형입니다. 캐스트는 int 로 이동합니다. 맞습니다.
핸드북에 따르면 bool은 정수와 다른 특수 유형입니다. 따라서 잘못된 설명을 제거했습니다. 나는 논쟁하지 않을 것이지만 - 특별하지는 않습니다.
디마_S :
즉 컴파일러가 열거의 값 목록과 총 수를 고려하지 않는다고 말하고 싶습니까?
2. 여기에서도 모든 것이 올바르게 작성되었습니다. 유일한 경우는 열거형이 아니라 조건부 분기에 대한 레이블일 뿐입니다.
케이스 레이블이 아니라 열거(bool 유형을 가장 작은 것으로 간주)를 의미했습니다. 다음은 동일한 컴파일 오류가 있는 예입니다.
따라서이 예와 관련하여 질문을 반복하겠습니다. 컴파일러가 Triple 열거의 값 목록과 총 수를 고려하지 않는다는 말입니까? switch 문에 사용된 열거형의 모든 값이 있습니다.
중간 결론은 다음과 같습니다. "enumeration+switch" 바인딩을 사용하면 기본 레이블 사용이 필수 가 됩니까?
이 옵션을 상상해 보십시오(그런데 값 3은 값의 명시적 선언과 함께 작동하지 않지만 -1은 쉽게 작동합니다). 그러나 변수의 명시적 초기화가 없으면 값이 인덱스 0을 가진 값과 동일하다는 것을 나타냅니다(여기서 모든 것이 고려됨).
기본 옵션이 제외된 경우 함수는 무엇을 반환해야 합니까?
중간 결론은 다음과 같습니다. "enumeration+switch" 바인딩을 사용하면 기본 레이블 사용이 필수 가 됩니까?
예, return()에서 무언가를 반환해야 하는 경우.
또는 적어도 컴파일러가 함수가 무언가를 반환할 것이라고 확신할 수 있도록: