는 확실이 인덱스를 벗어나 결코하려면역 변조의 약자가 있습니까?
i % 6
같은 것을 할 수있는, 내가이 배열을 통해 카운터를 증가하고있어 경우에 나는 5
을 통해 배열 인덱스 0을 말한다. 감가 상각을 위해 똑같은 표기법이 있는가? 감소시키는 때 나는
내가 아는 어떤 언어에 국한되지 나는 일부 언어에서
if (i < 0) i = 5
는 확실이 인덱스를 벗어나 결코하려면역 변조의 약자가 있습니까?
i % 6
같은 것을 할 수있는, 내가이 배열을 통해 카운터를 증가하고있어 경우에 나는 5
을 통해 배열 인덱스 0을 말한다. 감가 상각을 위해 똑같은 표기법이 있는가? 감소시키는 때 나는
내가 아는 어떤 언어에 국한되지 나는 일부 언어에서
if (i < 0) i = 5
n
양수 및 음수 카운터 i
들어 카운터 모듈 양의 정수 값으로서 연산 n
의 증가 및 감소를 정의 할 수있다. 증가분은 i = (i + 1) % n
이고 감소분은 i = (i + n - 1) % n
입니다.
을 수행 할 수 있습니다 일반적으로 부탁 해요, i % 6
는 여전히도 작동합니다 - 그들은 당신, 그래서 긍정적 인 긍정적으로 부정적인 %를 정의 내가 -1로 감소 할 때 5를 얻는다.
모든 언어에서 (i + 6) % 6
은 증가 또는 감소 할 때 범위에 머물러 있습니다.
선택한 언어가 사용자 정의 형식에 대한 모듈 식 산술을 지원하면 모듈 형 정수를 부각 시키거나 제거하면 해당 모듈 형 정수 범위 내의 값이됩니다.
Ada를 사용하면 모듈 유형을 지정할 수 있습니다. 질문에 대한 에이다 용액
type Index_type is mod 6;
type Example is array(Index_Type) of Integer;
어레이를 통해 반복하고, 원형 버퍼로 처리 단순한 루프 I가 증가 또는 감소 될 수있는 루프 내의
declare
I : Index_Type := 0;
A : Example;
begin
loop
A(I) := some_value;
I := I - 1;
end loop;
end;
으로 수행 될 수 있고, 이 경우 산술 연산은 항상 모듈로 6이됩니다. Ada에서 이러한 원형 버퍼는 프로듀서/소비자 패턴에서 사용되기도합니다. 이 경우 별도의 읽기 및 쓰기 색인이 있으며 각 쓰기시 버퍼 가득 참 조건을 확인하고 각 읽기가 발생할 때마다 버퍼 비어 있음 조건을 확인합니다.