이 코드는 정상적으로 컴파일되지만 실행하려고하면 실패합니다.C에서 비트 연산
int main(int argc, char** argv) {
int c = 4;
int b = 5;
int a = a & b;
printf(a);
return (EXIT_SUCCESS);
}
내가 뭘 잘못하고 있니?
이 코드는 정상적으로 컴파일되지만 실행하려고하면 실패합니다.C에서 비트 연산
int main(int argc, char** argv) {
int c = 4;
int b = 5;
int a = a & b;
printf(a);
return (EXIT_SUCCESS);
}
내가 뭘 잘못하고 있니?
printf
의 첫 번째 인수는 형식 문자열 char*
입니다. 형식 문자열 구성에 대한 자세한 내용은 this을 참조하십시오.
printf("%d", a);
그렇지 않으면 a
은 문자열의 시작의 주소로 취급되며,이 역 참조 때 (이 충돌거야 좋은 기회가) 정의되지 않은 동작이 발생할 :
printf(a);
이 있어야한다.
또한 위의 코드는 그대로 컴파일되지 않기 때문에 당신이 말하는 정확한 코드가 아니라고 가정합니다.
printf
은 int
이 아니라 char *, ...
입니다. 난 당신의 코드가 있어야한다고 생각 :
printf("%d", a);
또한, 함수 이름, test
및 func
가 일치하지 않습니다. 하지만 그게 문제라고 생각하지 않습니다.
정확히 무엇을하고 싶은지 모르면 프로그램이 실제로 실패합니다 (컴파일 및 런타임).
return (EXIT_SUCCESS);
은 컴파일 오류가 발생합니다.printf(a);
은 형식 지정자가 잘못되었습니다. 실제로 있어야 함 printf("%d",a);
int func(int x)
에 대한 전달 선언 없음.func
를 호출하고 싶었지만 당신은`test` 함수를 정의하지 않습니다, 또는 당신이 func``호출하지 않는 test
를 호출 결국 보인다. –
"실패 함"은 매우 모호합니다. 뭐하는거야? 무엇을 기대합니까? – abelenky
'func()'가'x'가 2의 거듭 제곱인지 아닌지를 검사해야한다면,'func()'가'x'의 음수 값을 검사하여 사건을 잡아야합니다 여기서 그것은 INT_MIN이다. –