2016-07-11 2 views
-2

의 작품 나는 C에 초보자이고 나는 - 여기에 인쇄하는 방법이 라인어떻게 문자 [] = "OX | -"ARR C 언어

char arr[] = "OX|-"; 

printf("%4c",arr[6]); //it prints - 
  1. 우연히 만났다?

  2. | 연산자가 그런 형식으로 모든 유형의 배열로 작동합니까?

  3. 이 줄은 java, C# 같은 다른 언어에서도 작동합니까?

+0

이것은 매우 어리석은 질문 일 수 있습니다 .. 그리고 u는 downvoted.no 문제가 .. 내 아이디어를 제안했다 .. 그래서 내가 어떻게 "-"인쇄 된 이해할 수있다 – adi

+2

게시 된 코드는 * 정의되지 않은 동작 *을 호출합니다. 첫 번째 질문은 아무 것도없는 곳에서 정의를 요구하면서 시도하고 대답하기에 무의미합니다. 두 번째 질문은 의미가 없습니다. 게시 한 두 줄에 '연산자 |'(비트 OR)가 사용되지 않았기 때문입니다. 세 번째 질문은 다른 언어가 비슷한 행동을 보이는지 묻는 것 같습니다. * 그 * 질문 * 할 수 있습니다 : 일부는, 일부 않을 수도 있습니다. – WhozCraig

+0

"* 인쇄 방법 - 여기? *"어떻게 될 것으로 예상됩니까? – alk

답변

0

이것은 변수가 스택에 저장되는 방식 때문입니다. arr [6]을 참조하여 어레이의 끝 부분 (5 바이트 만)을 날려 버렸고 이제 다른 메모리 영역을 참조하고 있습니다. 무슨 일이 있어도 그 전화에 의해 인쇄 될 것이 있습니다. | 여기 연산자가 아니야.

+2

C 표준은 스택을 요구하지 않습니다. – Olaf