2017-01-20 13 views
1

는 확실이 인덱스를 벗어나 결코하려면역 변조의 약자가 있습니까?

i % 6 

같은 것을 할 수있는, 내가이 배열을 통해 카운터를 증가하고있어 경우에 나는 5

을 통해 배열 인덱스 0을 말한다. 감가 상각을 위해 똑같은 표기법이 있는가? 감소시키는 때 나는

내가 아는 어떤 언어에 국한되지 나는 일부 언어에서

if (i < 0) i = 5 

답변

0

n 양수 및 음수 카운터 i 들어 카운터 모듈 양의 정수 값으로서 연산 n의 증가 및 감소를 정의 할 수있다. 증가분은 i = (i + 1) % n이고 감소분은 i = (i + n - 1) % n입니다.

0

을 수행 할 수 있습니다 일반적으로 부탁 해요, i % 6는 여전히도 작동합니다 - 그들은 당신, 그래서 긍정적 인 긍정적으로 부정적인 %를 정의 내가 -1로 감소 할 때 5를 얻는다.

모든 언어에서 (i + 6) % 6은 증가 또는 감소 할 때 범위에 머물러 있습니다.

0

선택한 언어가 사용자 정의 형식에 대한 모듈 식 산술을 지원하면 모듈 형 정수를 부각 시키거나 제거하면 해당 모듈 형 정수 범위 내의 값이됩니다.

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에서 이러한 원형 버퍼는 프로듀서/소비자 패턴에서 사용되기도합니다. 이 경우 별도의 읽기 및 쓰기 색인이 있으며 각 쓰기시 버퍼 가득 참 조건을 확인하고 각 읽기가 발생할 때마다 버퍼 비어 있음 조건을 확인합니다.