는 :이니셜 요소 코드 오류
void main(){
int a = 5;
static int i = a+5;
printf("%d", i);
}
을 나는 오류를 얻을 : 초기화 요소가이 무엇을 의미합니까
일정하지?
는 :이니셜 요소 코드 오류
void main(){
int a = 5;
static int i = a+5;
printf("%d", i);
}
을 나는 오류를 얻을 : 초기화 요소가이 무엇을 의미합니까
일정하지?
정적 변수는 데이터 세그먼트로 이동합니다. 데이터 세그먼트는 컴파일 타임에 초기화됩니다. 즉, 초기 값은 컴파일 타임에 알려 져야합니다. 귀하의 경우, 초기 값 (값 a)은 실행시에만 사용 가능한 스택의 변수에서 가져옵니다.
YAA @ absum right right ... –
감사합니다. 나는 지금 포인트를 얻었다. –
당신은 상수 (같은 int a = 5;
)과 함께 있지만, 불법 식 (a+5
)와 변수 i
하지 초기화 때문이다.
키워드 static
은 변수 i
의 인스턴스가 정확히 하나 존재한다는 것을 의미하며, 해당 인스턴스는 프로그램 수명 기간 동안 지속됩니다. 예를 들어 함수 호출간에 값을 저장하려는 경우에 유용합니다.
변수가 응용 프로그램이 시작될 때 초기화되므로 값은 일정해야합니다.
귀하의 경우, 함수가 호출 될 때마다 새로운 값을 얻으므로 "정적"을 선언 할 필요가 없습니다.
C에서 Initializer는 일정해야합니다. 그러나 당신이 어떤 오류를 생성하지 않습니다 ...
int a = 5;
static int i;
i = a + 5;
printf("%d", i);
이 같은 것을 할 수 있습니다 ... 기능 범위의
당신이 말하는 것은 intitializer가 상수 여야하지만이 코드는 어떨까요? void main() { int a = 5; int i = a + 5; printf ("% d", i); } –
은 변수가 포함 된식이 아닌 상수로 초기화해야합니다. 내가 잘못하면 나를 바로 잡아주세요 ... –
정적 변수를 실행중인 –
참고 : 'void main'은 아기 예수를 부르짖입니다. – cHao
@cHao void main은이 문제와 아무런 관련이 없습니다 ... –
@AMIT : 그것이 내가 대답으로 게시하지 않은 이유입니다. 그냥 선생님. – cHao