아하
  • 토픽

  • 스파링

  • 잉크

  • 미션


순수한벌잡이242

순수한벌잡이242

C언어 %d\n은 왜 줄바꿈을 하지 않나요?

\n 이 줄바꿈을 하는거라고 알고있는데

printf("%d\n" , 3/2) 를 출력하니

줄을 바꾸지않고 1을 출력하더라구요

왜 그런건가요?

한 줄 비우고 다음 줄에 1이 출력되어야하는게 아닌가요?

    5개의 답변이 있어요!

    • 보랏빛수염고래51

      보랏빛수염고래51

      "%d\n"

      이면 출력하고 한줄 비우는것입니다. 보시면 줄바꿈을 출력한 이후에 하신걸 볼 수 있습니다.

      "\n%d"

      이렇게 해야지 줄바꿈 하고 출력입니다. 한번 테스트해보시면 원하는 결과값을 보실수 있습니다.

      참고로 컴퓨터는 입력 순서대로 해석해서 실행하니 프로그래밍할때 참조해서 구현해주시면 됩니다.

    • \n이 한줄을 바꾸는 것이 맞습니다.

      printf(%d\n", 3/2)를 출력을 하면 1을 출력 하고 그이후에 한줄을 바꾸는 것입니다.

      한줄을 비우고 1을 출력하려면 printf("\n%n", 3/2) 를 해야합니다.

      아래 코드로 하면 될 것 같습니다.

      #include <stdio.h> int main() { printf("\n%d", 3/2); return 0; }

    • 말씀하신 코드인 printf("%d\n", 3/2)를 해석하자면 먼저 %d에 대한 값을 출력 후에 \n으로 줄바꿈을 하라는 것으로 해석할 수 있습니다.

      먼저 줄바꿈을 하고 값을 출력하기 위해서는 printf("\n %d", 3/2) 이런 식으로 써야 먼저 줄바꿈을 한 후에 값을 출력할 것으로 보입니다.

    • \n 이 줄바꿈 하는것이 맞습니다

      근데 원하시는게 한줄 비우고 나서 다음줄에 1이 출력되어야 하니

      제일 먼저 \n 으로 한줄 바꾸고 나서 결과값 출력 그리고 나서 다시 다음줄 로 가게 명령을 해야 합니다

      그러니깐 printf("%d\n" , 3/2)  가 아니라

      printf("\n%d\n" , 3/2)  이 맞는데 보통 \r\n 으로 표기를 합니다

      printf("\r\n%d\r\n" , 3/2)  이 맞습니다

    • 1을 출력하고 줄바꿈이 됩니다. 줄을 바꿔서 1을 출력하고 싶으면 "\n%d\n"하심 됩니다. 만일 "\n%d"로 하면 1출력뒤 줄바뀜없이 프롬프트가 출력됩니다.

      \n은 보통 CR (carrage return)과 LF (line feed)가 합쳐진 컨트롤문자인데 os에 따라 LF만 적용되는 경우도 있습니다.