int 및 double 대신 short 및 long 사용 (C ++)

Pouya

int 및 double 대신 short 및 long을 사용하면 이점이 있습니까? int와 double이 더 많은 스토리지를 차지하는 것 외에는? 교수님은 설명없이 int와 double을 사용하는 코드를 처벌합니다. 내가 사용하는 몇 권의 교과서에서 그에 대한 좋은 이유를 찾지 못했습니다. 어디에서 더 유용 할 수 있습니까? 예를 들어, 내 코드의 많은 함수 중 하나는

    void randDir(int& x, int& y){
            do{
                x = rand() % 4 - 1;
                y = rand() % 4 - 1;
                if(x == 2) x=0;
                if(y == 2) y=0;
            }while(x == 0 && y == 0);
  }  

이것이 제 교수님이 원했던 것입니다

    void randDir(short& x, short& y){
    do{
        x = rand() % 4 - 1;
        y = rand() % 4 - 1;
        if(x == 2) x=0;
        if(y == 2) y=0;
    }while(x == 0 && y == 0);
}
브라이언 비

사용의 유일한 장점은 short공간을 덜 차지한다는 것입니다. 매우 메모리가 부족한 환경을 위해 프로그래밍하거나 숫자 배열이 많거나 데이터가 프로그램의 주소 공간을 벗어나는 경우 ( 예 : 디스크에 저장하거나 네트워크를 통해 전송) 이것은 중요 할 수 있습니다. . 다른 경우에는 int불필요하게 다른 유형을 사용 하면 프로세서 아키텍처가 설계된 방식으로 인해 실제로 프로그램 속도느려질 수 있습니다 . 예를 들어 :

당신이 생각하는 크기와 정확히 일치하는 유형이 필요한 경우 short, 비트 패턴이나 이와 유사한 것을 저장하기 위해 std::int16_t, not 과 같은 정확한 너비 유형 중 하나를 사용해야합니다 short. 따라서 일반적으로 short.

C ++ 강사가 오래 전에 모든 바이트가 중요한 환경에서 코딩을 배웠을 가능성이 있으며 오늘날에도 여전히 그렇다고 잘못 생각할 수 있습니다. 안타깝게도 이러한 선입견은 매우 일반적입니다. (다른 증상으로는 예외 금지 및 표준 라이브러리 컨테이너 사용 금지가 있습니다.) 그러한 경우 일반적으로 똑똑한 사람들이 종종 어리석은 말을 할 수 있다는 사실을 인식해야합니다. Stack Overflow는 여기에 나열된 책과 같이 현재 모범 사례에 대한 정보를 얻을 수있는 좋은 장소입니다. The Definitive C ++ Book Guide and List

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

int, float, double, long 및 string 간 변환

분류에서Dev

c에서 int 및 short의 동작

분류에서Dev

(C ++) long long unsigned int에서 long double 및 back으로 캐스팅하면 0이 생성되는 이유

분류에서Dev

C에서 scanf () 및 printf () 대신 read () 및 write () 사용

분류에서Dev

C에서 unsigned long 및 int 추가

분류에서Dev

C 캐스팅 double-> long-> short (오른쪽 시프트 ">>"사용)

분류에서Dev

C #에서 switch 문 대신 enum 및 struct 사용

분류에서Dev

형식 지정자 % d 및 % u를 사용하여 ~ 0을 (unsigned int) 및 (unsigned short)로 캐스팅하면 short에 대해서는 동일한 결과가 생성되지만 int에 대해서는 다른 결과가 생성됩니다.

분류에서Dev

int ** 및 double ** 매개 변수를 사용하여 C ++ 함수를 가져 오는 방법

분류에서Dev

Float 및 Float 반올림 대신 Double

분류에서Dev

ScrollView 및 ForEach 대신 목록 사용

분류에서Dev

cublasSetMatrix 및 cublasSetVector 대신 cudaMemCpy 사용

분류에서Dev

Java 용 루프 내부 및 외부에서 int / double을 사용하는 방법

분류에서Dev

long double 사용

분류에서Dev

is_numeric () 및 typecasting to (int) 사용

분류에서Dev

List <int>, List <decimal> 및 long에 대한 JSON 본문

분류에서Dev

Posix Semaphore에서 공유 메모리 사용 C에서 대기 및 신호

분류에서Dev

C # 성능-IntPtr 및 Marshal 대신 안전하지 않은 포인터 사용

분류에서Dev

왜 항상 사용해야하나요 || 대신 | 및 & 대신 &&?

분류에서Dev

int 대신 long을 사용할 때 더 빠른 프로그램

분류에서Dev

이항 연산자에 대한 'int'및 'double (double *, double *, int)'유형의 유효하지 않은 피연산자

분류에서Dev

이항 연산자에 대한 'int'및 'double (double *, double *, int)'유형의 유효하지 않은 피연산자

분류에서Dev

왜 및 String.format는 % s에 대신의 int를 허용 하는가?

분류에서Dev

int 대신 double을 사용하여 루프

분류에서Dev

벡터의 논리 연산자 long 및 short 형식

분류에서Dev

NSLogs의 unsigned int 및 unsigned long Xcode 경고

분류에서Dev

계승을 계산하는 동안 long 및 double을 사용하여도 가비지 값을 얻습니다.

분류에서Dev

C ++에서 cin을 사용하여 int 변수에 char 및 int 입력

분류에서Dev

Java 'Int'및 'Double'배우기 시작

Related 관련 기사

  1. 1

    int, float, double, long 및 string 간 변환

  2. 2

    c에서 int 및 short의 동작

  3. 3

    (C ++) long long unsigned int에서 long double 및 back으로 캐스팅하면 0이 생성되는 이유

  4. 4

    C에서 scanf () 및 printf () 대신 read () 및 write () 사용

  5. 5

    C에서 unsigned long 및 int 추가

  6. 6

    C 캐스팅 double-> long-> short (오른쪽 시프트 ">>"사용)

  7. 7

    C #에서 switch 문 대신 enum 및 struct 사용

  8. 8

    형식 지정자 % d 및 % u를 사용하여 ~ 0을 (unsigned int) 및 (unsigned short)로 캐스팅하면 short에 대해서는 동일한 결과가 생성되지만 int에 대해서는 다른 결과가 생성됩니다.

  9. 9

    int ** 및 double ** 매개 변수를 사용하여 C ++ 함수를 가져 오는 방법

  10. 10

    Float 및 Float 반올림 대신 Double

  11. 11

    ScrollView 및 ForEach 대신 목록 사용

  12. 12

    cublasSetMatrix 및 cublasSetVector 대신 cudaMemCpy 사용

  13. 13

    Java 용 루프 내부 및 외부에서 int / double을 사용하는 방법

  14. 14

    long double 사용

  15. 15

    is_numeric () 및 typecasting to (int) 사용

  16. 16

    List <int>, List <decimal> 및 long에 대한 JSON 본문

  17. 17

    Posix Semaphore에서 공유 메모리 사용 C에서 대기 및 신호

  18. 18

    C # 성능-IntPtr 및 Marshal 대신 안전하지 않은 포인터 사용

  19. 19

    왜 항상 사용해야하나요 || 대신 | 및 & 대신 &&?

  20. 20

    int 대신 long을 사용할 때 더 빠른 프로그램

  21. 21

    이항 연산자에 대한 'int'및 'double (double *, double *, int)'유형의 유효하지 않은 피연산자

  22. 22

    이항 연산자에 대한 'int'및 'double (double *, double *, int)'유형의 유효하지 않은 피연산자

  23. 23

    왜 및 String.format는 % s에 대신의 int를 허용 하는가?

  24. 24

    int 대신 double을 사용하여 루프

  25. 25

    벡터의 논리 연산자 long 및 short 형식

  26. 26

    NSLogs의 unsigned int 및 unsigned long Xcode 경고

  27. 27

    계승을 계산하는 동안 long 및 double을 사용하여도 가비지 값을 얻습니다.

  28. 28

    C ++에서 cin을 사용하여 int 변수에 char 및 int 입력

  29. 29

    Java 'Int'및 'Double'배우기 시작

뜨겁다태그

보관