오류, 버그, 질문 - 페이지 3150

 
Nikolai Semko # :

그럼에도 불구하고 삼항 연산자는 더 간결해 보입니다(IMHO).

 int limit = prev_calculated== 0 ? 0 : prev_calculated- 1 ;

훨씬 더 간결한 방법:

 int limit = prev_calculated- bool (prev_calculated);

:))

 
Nikolai Semko # :

나는 이미 이 구성을 사용하여 rate_total 숫자로 버퍼 인덱스에 액세스한다고 썼습니다(prev_calculated == 0일 때).
그리고 이것은 오버플로 입니다. Rates_total 은 버퍼의 크기이고 마지막 요소는 Rates_total -1 이기 때문입니다.

예, 오버플로가 지금 발생하는 이유를 이해합니다!

이전에는 이 디자인이 작동 했지만 지금은 작동하지 않는 이유는 무엇입니까?

 int limit = rates_total-prev_calculated;

for ( int i=limit; i>= 0 ; i--)

버퍼가 rate_total에 정확히 할당되기 때문에
rate_total +1 아님

Artyom이 무슨 말을 할지 기다리고 있습니다. 그는 문제의 본질을 이해하고 있습니다.
 
Roman # :

예, 오버플로가 지금 발생하는 이유를 이해합니다!

이전에는 이 디자인이 작동 했지만 지금은 작동하지 않는 이유는 무엇입니까?

버퍼가 rate_total에 정확히 할당되기 때문에
rate_total +1 아님

기적은 일어나지 않습니다.
이전에는 작동했다면 다른 코드였습니다.

 
Roman # :

그런 디자인으로


표시기 버퍼가 범위를 벗어났습니다.

i>=0 주기인 틱 의 예를 보여주세요.
아마도 내가 뭔가를 잊어버렸고 제대로 하고 있지 않을 수 있습니다.

나는 확인을 위해 최대 가장자리에서 인덱스를 대략 2 또는 3만큼 줄입니다.)

 
Nikolai Semko # :

기적은 일어나지 않습니다.
이전에는 작동했다면 다른 코드였습니다.

이전에는 한계 계산이 정확했습니다.

 int limit = rates_total- 1 -prev_calculated;

그리고 i>=0 주기를 입력했습니다.

 for ( int i=limit; i>= 0 ; i--)

그리고 이제 제한이 -1이기 때문에 입력하지 않습니다.

 
이 토론은 여기에서 주제가 아니며 일부 초보자 스레드에 속합니다.
 
Roman # :

이전에는 한계 계산이 정확했습니다.

그리고 i>=0 주기를 입력했습니다.

이제 제한이 -1로 밝혀졌기 때문에 입력되지 않습니다.

이전에도 동일한 코드로 입력할 수 없었습니다.
작곡하지마

Khatimlyansky 에서 이전 빌드를 다운로드하고 내 말을 믿지 않는지 확인하십시오.

 
TheXpert # :
이 토론은 여기에서 주제가 아니며 일부 초보자 스레드에 속합니다.

이전에 이 디자인을 사용한 적이 없다면 주제를 벗어난 주제를 삼가십시오.

 
Nikolai Semko # :

이전에도 동일한 코드로 입력할 수 없었습니다.
작곡하지마

Khatimlyansky 에서 이전 빌드를 다운로드하고 내 말을 믿지 않는지 확인하십시오.

Artyom도 이 디자인을 사용했습니다.
위에서 설명한 것처럼 그는 여기에서 문제를 이해합니다.

 
Roman # :

이전에는 한계 계산이 정확했습니다.

그리고 i>=0 주기를 입력했습니다.

그리고 이제 제한이 -1이기 때문에 입력하지 않습니다.

항상 확인이 있었습니다: if(limit>1) limit=rates_total-1. 계산에 i+그러나 없는 경우입니다. 있는 경우 이러한 "무언가"가 구성에 포함되어야 합니다. limit=rates_total-1-how much_that.

그것 없이는 항상 범위를 벗어난 배열이 있었습니다. 결국 Rates_total은 Bars()에 불과합니다. 따라서 5000개의 막대가 있고 인덱스 5000을 참조하는 경우 배열을 넘어갑니다(막대 수는 0부터 시작).

귀하의 예에서 한계 계산이 올바르지 않습니다.

 int limit = rates_total- 1 -prev_calculated;

다음과 같아야 합니다.

 int limit = rates_total-prev_calculated;

그리고 제한> 1을 확인한 후

한계가 여전히 1보다 크면 한계 = 비율_총-1