변수의 행동에 대한 오해 - 페이지 4

 
wlad :
일반적으로 개발자가 관심을 갖기를 바랍니다.

그리고 개발자는 어떻습니까? 그들이 서버에 변수를 저장하기를 원하십니까? 정전으로 인해 컴퓨터가 멈추고 재부팅되는 동안?
 
wlad :

직접 테스트

예, 당신은 그것이 무엇인지 볼 수 있습니다


나는 당신과 동정
 

여기서 무슨 말을 하는 겁니까?

아직 진짜 답이 없다

면면에 있는 사실 - 캔트는 존재한다

 
정말 (누군가의 머리에)
 
Vinin :
정말 (누군가의 머리에)
왜 이런 일이 일어나는지 설명해 주시겠습니까
 
이미 다 설명했으니 남의 말은 듣기 싫다
 
Vinin :
이미 다 설명했으니 남의 말은 듣기 싫다

여기서 외부 변수가 변경되면 전역 변수가 해당 값을 취한다고 말합니다.

 

가죽 끈으로 만 발생합니다.

다른 유형과 잘 작동합니다.

내가 뭘 잘못했는지 설명

 

문자열과 int의 동작을 비교하는 예를 보여 드리겠습니다.

 extern string ValueString = "DDD" ;
extern int     ValueInt    = 10 ;  
     
string tempString= "" ;
int     tempInt= 0 ;

bool    firsttime= true ;
       
int start() {
   string txt= StringConcatenate ( "  ValueString: " ,ValueString, " < >" , "  tempString: " ,tempString, "\n" ,
                                 "  ValueInt: " ,   ValueInt,   " < >" , "  tempInt: " ,tempInt, "\n" ,
                                 "  firsttime: " ,firsttime);    
   if (firsttime) {     // значение присваевается тольо ОДИН раз   
      tempString=ValueString; 
      tempInt=ValueInt; 
      firsttime= false ; 
   }

   Print (txt);
   Comment (txt);                              
}

및 로그 출력:

1. Expert Advisor 로드 및 전역 변수 초기화

2. 외부 변수를 전역 변수로 전달. 처음으로 bool을 통해 구현된 일회성 전송

3. 외부 변수 변경

4. 여기에서 차이점을 볼 수 있습니다.

tempString이 ValueString의 값을 취함 - 잘못됨

ValueInt가 변경되더라도 tempInt 는 값을 유지합니다.

5와 6은 3과 4와 같다.


문자열이 다르게 작동하는 이유를 설명하십시오.

int가 올바른 동안

구체적인 답변을 부탁드립니다

 
wlad :

문자열이 다르게 작동하는 이유를 설명하십시오.

int가 올바른 동안

구체적인 답변 부탁드립니다

나는 아주 구체적이지 못하다. 링크 브레이크를 찾으십시오. 내가 할 수 있는 한.

더 짧다. 포럼 어딘가에서 컴파일러가 동일한 값을 가진 문자열 변수를 찾으면 하나의 실제 메모리에 저장하고 참조해야 하는 모든 사람에게 해당 변수에 대한 링크를 배포한다는 사실을 알게 되었습니다.

저것들. 당신이 옳을 것입니다. 그들은 아마도 하나의 변수에 쓰여질 것입니다. 아이디어에 최적화 프로그램의 잼이 될 수 있습니다. 서비스 데스크에 글을 작성하고 코드와 함께 예제를 보내십시오. 그들은 수리할 것입니다.

동시에 여기에 복사하십시오. MetaTrader 4 Build 529 베타가 새로운 컴파일러와 함께 출시됨

--

// 고문이 고칠 때까지 기다리지 않고 고문의 작업을 고칠 것입니다. 묻지 마, 몰라. 그러나 내 연습에서는 그러한 결함을 우회할 방법이 없는 경우가 없었습니다.