이렇게하는 것의 차이점은 무엇입니까?#Define과 Float의 차이점은 무엇입니까?
#define NUMBER 10
내가 다른 이상을 사용해야 어떤 상황에서
float number = 10;
?
이렇게하는 것의 차이점은 무엇입니까?#Define과 Float의 차이점은 무엇입니까?
#define NUMBER 10
내가 다른 이상을 사용해야 어떤 상황에서
float number = 10;
?
#define NUMBER 10
전처리 기 (컴파일 중)에서 실행할 문자열 교체를 만듭니다.
float number = 10;
는 이진의 데이터 세그먼트에 float를 만들고 (10) 즉, 그것을 초기화합니다 그것은 주소를 가지며 변경할 수 있습니다. 그래서
float a = NUMBER;
를 작성
는
메모리 액세스를 만들 것이다
float a = number;
를 쓰는 반면
float a = 10;
를 쓰는 것과 같은 것이다.
"#DEFINE는"실제로 프로그램을 시작하고 전체 프로그램에 대한 유효하기 전에 실행되는 전처리 매크로입니다
플로트 프로그램/블록 내부에 정의 된 데이터 유형이 만 프로그램 내에서 유효/블록.
"프로그램이 시작되기 전에"는 컴파일되기 전의 의미입니다. –
Philipp이 말한 것처럼 #define
양식은 컴파일하기 전의 전처리 단계에서 코드에 대체 코드를 생성합니다. #define
은 number
과 같은 변수가 아니기 때문에 컴파일 타임에 실행 파일에 하드 정의가 적용됩니다. 이것은 당신이 repesenting하는 것이 실행 시간에 어딘가에서 계산되거나 읽혀질 필요가없고 실행 중에 변경되지 않는 진정한 상수라면 바람직합니다.
#defines
은 코드를 읽기 쉽도록 만드는 데 매우 유용합니다. 당신은 물리학 계산을하고 있던 가정 해 - 오히려 당신의 코드에 0.98f를 plonking보다 사방이 중력 가속도 상수를 사용해야합니다, 당신은 단지 한 곳에서 정의 할 수 있으며 코드의 가독성 증가 :
#define GRAV_CONSTANT 0.98f
...
float finalVelocity = beginVelocity + GRAV_CONSTANT * time;
을 편집 돌아와서 내 대답을 발견하고 난 왜 #define
을 사용하면 안되는지 언급 놀랐습니다.
일반적으로 #define
을 피하고 #define
에는 범위가없고 유형이 IDE와 컴파일러 모두에 유용하기 때문에 실제 유형 인 상수를 사용하려고합니다. What is the best way to create constants in Objective-C
그것은 또한 주목해야한다 퍼팅'떠 A = 10;'(또는 무엇이든) 헤더 파일 내에서 가능성이 링크 할 때 심볼 오류가 중복 될 것이다
는이 질문 허용 대답을 참조하십시오. 그러나'# define '을 사용하는 것은 불가능합니다. – trojanfoe