배열과 같은 많은 변수가 있습니다 : short num = 7123;
. 값은 항상 4 자리입니다. 이것을 a = 7; b = 123;
으로 바꾸는 방법?짧은 정수에서 첫 번째와 마지막 세 자리를 연결 하시겠습니까?
내가 생각할 수있는 것은 C-string으로 변환하고 제거하는 것이지만 효율적으로 보이지는 않습니다. 로
배열과 같은 많은 변수가 있습니다 : short num = 7123;
. 값은 항상 4 자리입니다. 이것을 a = 7; b = 123;
으로 바꾸는 방법?짧은 정수에서 첫 번째와 마지막 세 자리를 연결 하시겠습니까?
내가 생각할 수있는 것은 C-string으로 변환하고 제거하는 것이지만 효율적으로 보이지는 않습니다. 로
b = num % 1000;
a = num/1000;
short a = num/1000;
short b = num % 1000;
그것은 간단합니다 :
a = num/1000;
b = num % 1000;
// cast to integer should drop the decimal
a = (int) (num/1000);
// use variable a to subtract the thousand place to zero
b = a - num;
은 C 표준 라이브러리에 포함 된 div()
하나의 작업에서이 작업을 수행 할 수있는 :
div_t r = div(num, 1000);
a = r.quot;
b = r.rem;
은 C 표준 라이브러리 최적화 된 구현을 기대할 수있다. 이온은 div()
인데, 이는 하나의 기계 명령 (이러한 명령을 가진 CPU에서)에 나머지 및 나머지를 수행합니다.
2tru 2tru 2tru – user1139252
또는 b = num - a * 1000을 나누기를 저장하려는 경우 ... – mcmcc
@mcmcc 만약 우리가 미세 최적화가 될 경우 24를 더하고 오른쪽으로 비트 쉬프트를 10으로 나누고 나누기를 피하십시오 그리고 modulo ... (단 int는 4 자리 이상을 차지할 수 있기 때문에 안전합니다. 따라서 넘침의 기회는 없습니다) – bdares