그리고 다시 초기화되지 않은 변수에 대해. 그들의 가치는 예측할 수 없음이 분명합니다. 그러나 처음으로 나는 그들이 함수를 실행하는 동안 바로 값을 스스로 변경할 수 있다는 사실에 직면했습니다 (나는 그런 검색을 찾지 못했습니다). 다음은 스크립트 코드와 내가 얻은 것입니다.
//--- проверка поведения неинициализированных переменныхvoidOnStart ()
{
Print ( "проверка поведения неинициализированных переменных" );
long a, b;
//тест без изменения значений переменныхPrintFormat ( "a==%I64d, b==%I64d" , a, b);
Print ( "a==1:" , a == 1 );
Print ( "a==2:" , a == 2 );
Print ( "b==1:" , b == 1 );
Print ( "b==2:" , b == 2 );
PrintFormat ( "%I64d" , 1 ); //после этого начинаются чудесаPrintFormat ( "a==%I64d" , a);
PrintFormat ( "b==%I64d" , b);
Print ( "a==1:" , a == 1 );
Print ( "a==2:" , a == 2 );
Print ( "b==1:" , b == 1 );
Print ( "b==2:" , b == 2 );
PrintFormat ( "a==%I64d, b==%I64d" , a, b);
Print ( "a==1:" , a == 1 );
Print ( "a==2:" , a == 2 );
Print ( "b==1:" , b == 1 );
Print ( "b==2:" , b == 2 );
//тест с изменением значения переменныхint x, y = 0 ;
Print ( "x=" , x, " y=" , y);
Print ( "y = x++" );
y = x++;
Print ( "x=" , x, " y=" , y);
}
스크립트 실행을 반복하면 변수 a,b 및 x의 초기 값이 변경될 수 있지만 일반적인 동작은 일정합니다.
1. 스크립트의 첫 부분에서 코드의 변수 a와 b의 값은 변하지 않지만, PrintFormat("%I64d", 1) 실행 후 갑자기 PrintFormat("a==%I64d", a )는 1을 제공하고 b도 마찬가지입니다. 그리고 가장 흥미로운 것은 (a==1)==true이고 즉시 (a==2)==true(b도 마찬가지입니다)!!! PrintFormat("a==%I64d, b==%I64d", a, b)에 대한 마지막 호출에서 a==1을 표시하지만 b ==는 스크립트 시작 부분의 값입니다.
2. 스크립트의 두 번째 부분에서 비초기 변수의 값을 변경하려고 합니다. y=x++ 이후에는 x 값이 변경되어야 합니다. 그러나 동일하게 유지됩니다(이 실행에서 ==1).
누군가 스크립트를 실행하고 출력을 게시해 보세요.
따라서 감정가에 대한 질문 - 이것이 정상적인 행동(정의되지 않은 행동과 같은)입니까? 아니면 버그입니까?
그리고 다시 초기화되지 않은 변수에 대해. 그들의 가치는 예측할 수 없음이 분명합니다. 그러나 처음으로 나는 그들이 함수를 실행하는 동안 바로 값을 스스로 변경할 수 있다는 사실에 직면했습니다 (나는 그런 검색을 찾지 못했습니다). 다음은 스크립트 코드와 내가 얻은 것입니다.
스크립트 실행을 반복하면 변수 a,b 및 x의 초기 값이 변경될 수 있지만 일반적인 동작은 일정합니다.
1. 스크립트의 첫 부분에서 코드의 변수 a와 b의 값은 변하지 않지만, PrintFormat("%I64d", 1) 실행 후 갑자기 PrintFormat("a==%I64d", a )는 1을 제공하고 b에 대해서도 동일합니다. 그리고 가장 흥미로운 것은 (a==1)==true이고 즉시 (a==2)==true(b도 마찬가지입니다)!!! PrintFormat("a==%I64d, b==%I64d", a, b)에 대한 마지막 호출에서 a==1을 표시하지만 b ==는 스크립트 시작 부분의 값입니다.
2. 스크립트의 두 번째 부분에서 비초기 변수의 값을 변경하려고 합니다. y=x++ 이후에는 x 값이 변경되어야 합니다. 그러나 동일하게 유지됩니다(이 실행에서 ==1).
누군가 스크립트를 실행하고 출력을 게시해 보세요.
따라서 감정가에 대한 질문 - 이것이 정상적인 행동(정의되지 않은 행동과 같은)입니까? 아니면 버그입니까?
변수를 초기화하지 않는 것은 정상적인 동작이 아닙니다. 초기화하면 그러한 질문이 없을 것입니다.
논의했다.
오류는 분명하지 않습니다. "아마도 그렇게 의도된 것일 수 있습니다"
여기서 GetLastError() = ERR_WRONG_STRING_DATE 함수를 실행한 후. 날짜가 잘못된 경우 결과가 잘못된 이유는 무엇입니까?
나는 의심한다.
나는 너무 게으르지 않았습니다 ... 나는 세었습니다-당신은 30 줄이 있고 나는 13 줄이 있습니다
나는 너무 게으르지 않았습니다 ... 나는 세었습니다-당신은 30 줄이 있고 나는 13 줄이 있습니다
가장 중요한 것은 결과가 일치하고 성능이 떨어지지 않는다는 것입니다.
정렬된 배열에서 값을 이진 검색하는 동안 오류가 발생했습니다.
결과:
2가 아닌 3이어야 합니다.
정렬된 배열에서 값을 이진 검색하는 동안 오류가 발생했습니다.
결과:
2가 아닌 3이어야 합니다.
여기서 문제는 오류를 우회하는 것이 아니라 수정하는 것입니다. 특히 이 기능은 표준 소스에서도 많은 소스에서 사용할 수 있기 때문입니다. 그리고 터미널 코드 자체, 코드 편집기에서 사용된다는 점을 전혀 배제하지 않고...
여기서 문제는 오류를 우회하는 것이 아니라 수정하는 것입니다. 특히 이 기능은 표준 소스에서도 많은 소스에서 사용할 수 있기 때문입니다. 그리고 터미널 코드 자체, 코드 편집기에서 사용된다는 점을 전혀 배제하지 않고...
아마 고칠 것입니다. 내 생각에 큰 long의 문제는 거의 모든 비트가 사용되는 상황에 있습니다. 누군가가 너무 오래 후에이 오류를 발견했다는 사실이 놀랍습니다.
아마 고칠 것입니다. 내 생각에 큰 long의 문제는 거의 모든 비트가 사용되는 상황에 있습니다. 누군가가 너무 오래 후에이 오류를 발견했다는 사실이 놀랍습니다.
이렇게 오랜 기간 동안 자주 사용하는 기능에서 이 오류가 발견되지 않았다는 것이 놀랍습니다.
그리고 다시 초기화되지 않은 변수에 대해. 그들의 가치는 예측할 수 없음이 분명합니다. 그러나 처음으로 나는 그들이 함수를 실행하는 동안 바로 값을 스스로 변경할 수 있다는 사실에 직면했습니다 (나는 그런 검색을 찾지 못했습니다). 다음은 스크립트 코드와 내가 얻은 것입니다.
결과:
단말기:
2021.02.19 19:30:47.003 JSC ''Otkritie Broker''용 Terminal Otkritie Broker x64 빌드 2755가 시작되었습니다.
2021.02.19 19:30:47.113 터미널 Windows 7 서비스 팩 1 빌드 7601, Intel Core i5-2520M @ 2.50GHz, 5/7 Gb 메모리, 41/287 Gb 디스크, IE 11, UAC, GMT+3
스크립트 실행을 반복하면 변수 a,b 및 x의 초기 값이 변경될 수 있지만 일반적인 동작은 일정합니다.
1. 스크립트의 첫 부분에서 코드의 변수 a와 b의 값은 변하지 않지만, PrintFormat("%I64d", 1) 실행 후 갑자기 PrintFormat("a==%I64d", a )는 1을 제공하고 b도 마찬가지입니다. 그리고 가장 흥미로운 것은 (a==1)==true이고 즉시 (a==2)==true(b도 마찬가지입니다)!!! PrintFormat("a==%I64d, b==%I64d", a, b)에 대한 마지막 호출에서 a==1을 표시하지만 b ==는 스크립트 시작 부분의 값입니다.
2. 스크립트의 두 번째 부분에서 비초기 변수의 값을 변경하려고 합니다. y=x++ 이후에는 x 값이 변경되어야 합니다. 그러나 동일하게 유지됩니다(이 실행에서 ==1).
누군가 스크립트를 실행하고 출력을 게시해 보세요.
따라서 감정가에 대한 질문 - 이것이 정상적인 행동(정의되지 않은 행동과 같은)입니까? 아니면 버그입니까?
그리고 다시 초기화되지 않은 변수에 대해. 그들의 가치는 예측할 수 없음이 분명합니다. 그러나 처음으로 나는 그들이 함수를 실행하는 동안 바로 값을 스스로 변경할 수 있다는 사실에 직면했습니다 (나는 그런 검색을 찾지 못했습니다). 다음은 스크립트 코드와 내가 얻은 것입니다.
결과:
단말기:
2021.02.19 19:30:47.003 JSC ''Otkritie Broker''용 Terminal Otkritie Broker x64 빌드 2755가 시작되었습니다.
2021.02.19 19:30:47.113 터미널 Windows 7 서비스 팩 1 빌드 7601, Intel Core i5-2520M @ 2.50GHz, 5/7 Gb 메모리, 41/287 Gb 디스크, IE 11, UAC, GMT+3
스크립트 실행을 반복하면 변수 a,b 및 x의 초기 값이 변경될 수 있지만 일반적인 동작은 일정합니다.
1. 스크립트의 첫 부분에서 코드의 변수 a와 b의 값은 변하지 않지만, PrintFormat("%I64d", 1) 실행 후 갑자기 PrintFormat("a==%I64d", a )는 1을 제공하고 b에 대해서도 동일합니다. 그리고 가장 흥미로운 것은 (a==1)==true이고 즉시 (a==2)==true(b도 마찬가지입니다)!!! PrintFormat("a==%I64d, b==%I64d", a, b)에 대한 마지막 호출에서 a==1을 표시하지만 b ==는 스크립트 시작 부분의 값입니다.
2. 스크립트의 두 번째 부분에서 비초기 변수의 값을 변경하려고 합니다. y=x++ 이후에는 x 값이 변경되어야 합니다. 그러나 동일하게 유지됩니다(이 실행에서 ==1).
누군가 스크립트를 실행하고 출력을 게시해 보세요.
따라서 감정가에 대한 질문 - 이것이 정상적인 행동(정의되지 않은 행동과 같은)입니까? 아니면 버그입니까?