나는 C의 기초에 의문을 품는다.누군가이 코드를 명확하게 설명해 주시겠습니까?
- 다음 코드를 작성했습니다. 여기에
add()
함수에서, 나는 아무것도 돌려주지 않을 것이므로 출력이 약간의 정크 값이나 뭔가가 될 것이라고 예상했지만 그렇게되지는 않았습니다. 왜 그런 일이 일어 났는지 설명 할 수 있습니까? 코드에 잘못된 내용을 적어두면 실례합니다. - 내 생각에 변수
add1
에 대한 메모리가 스택에서 나온 것이므로add()
이 완료되면 할당 된 모든 메모리가 해제되므로 일부 정크 값이 표시됩니다. - 명백한 의심은 아무 것도 반환하지 않고 어떻게 올바른 값을 인쇄 할 수 있습니까?
코드 샘플 :
main() {
int x = 4, sum;
int n;
printf(" enter a number \n");
scanf("%d", &n);
sum = add(x, n);
printf(" total sum = %d\n", sum);
}
add(int x, int n) {
int add1 = 0;
add1 = x + n;
//return(add1);
}
이것은 정의되지 않은 동작입니다. 실제로 일어나고있는 일을 정확하게 이해하려고 시도하는 것은 실제로 생산적이지 않습니다. 당신이보고있는 어떤 행동도 예측할 수 없습니다. OS, 컴파일러, 프로그램 내 다른 (심지어 무관 한) 코드에 따라 달라질 수 있습니다. – kaylum
어떤 컴파일러가 사용됩니까? gcc가이 코드를 컴파일하지 못했습니다. 오류 : ISO C++에서 유형이없는 'add'선언을 금지합니다. [-fpermissive] – Evgeniy
@Evgeniy : 다른 언어가 무엇인지 명시하는 것은 쓸모가 없습니다. C가 아닌 C++은 C가 아닙니다. – Olaf