- C++ 등의 언어에서는 함수에 들어가는 인자가 판단되는 순서는 unspecified behavior입니다. 즉,
a+b
가 먼저 실행될 수도,scanf(...)
가 먼저 실행될 수도 있습니다.scanf
이후a+b
가 실행된다면, 입력의 줄 수만큼 출력하기 때문에 틀린 코드입니다.a+b
이후scanf
가 실행된다면, 맨 처음에 쓰레기 값을 출력하기 때문에 틀린 코드입니다.
- 어떻든
printf
와scanf
가 묶여 있기 때문에 입력의 줄 수만큼 출력합니다. 일단 예제가 안 그렇다는 사실을 유념하세요.
내 컴퓨터에서는 되는데 제출하면 틀리는 경우가 없는 것은 아니지만 극히 드뭅니다.
이런 주장을 하실 때 앞으로는 레퍼런스 체크를 통해 정확한 근거를 가지고 설명하시기를 부탁드립니다.
progress 4년 전
내 컴퓨터에서는 되는데, 제출하면 틀리는 경우도 없습니다. 더 많은 예제를 입력해보세요.
정말 죄송한데요, 그런 일이 일어났습니다.
이것이 저의 부족한 실력 때문일 가능성이 큰데, 너그럽게 글을 읽어주셨으면 좋겠습니다.
먼저 처음부터 말씀드리자면 (별 내용 없으니 패스하고 읽으셔도 됩니다)
-------
오늘 저는 "내가 못 푼 문제"란을 발견하고
쉬운 문제가 많아서 풀고 있었습니다.
그러던 중 문득 숏코딩이 생각났고
이정도 난이도면 나도 해볼까 하고 C++로 여러 시도를 해봤습니다.
그러던 중 다른 분들 코드를 보니까
#import<ios> 가 있더라고요.
처음 알았습니다.
보아하니 scanf와 printf정도 쓸 수 있더라고요
제가 지금 쓰는 IDE는 코드블럭입니다.
단점이 많지만 그냥 쓰고 있습니다.
중요한건 #import <ios>를 선언했는데
printf scanf가 안되더라고요.
백준은 되는데
그래서 다른문제 숏코딩을 시도할때도
코드블럭에서는 cstdio를 가져와서 쓰고
제출할때는 ios를 넣었습니다.
---------
제가 묻고 싶은것은
아래 코드가
코드블럭에서는 확실히 작동합니다.
GNU GCC컴파일러죠.
물론 #import<ios>지시문 대신
#include<cstdio>를 넣으면 말이죠.
하지만 백준에서의 ios와 제 코드블럭의 cstdio는 두 함수만을 쓴다는 점에서는 동일하다고 생각합니다.
(물론 제가 본 바로만요) 그래서 위에 구구절절 쓴 거고요.
그럼 완전히 동일한 두 코드(다른 지시문을 가진)는
같은 동작을 해야 하는데,
백준에서는 C++, C++11, C++14, C++17로 제출해도
틀렸다고 합니다. (C++에서는 컴파일 에러)
아무리 다른 플랫폼이지만
뭔가 다른 문제가 있는 건 아닐지, 조심스럽게 물어봅니다.
원래 백준에서는 안된다고 해도 뭐 할 말은 없지만...
제 코드가 문제라면 왜인지 좀 질문하겠습니다.