-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[표준] 정수 입출력 정의 #12
Comments
C의 #include <stdio.h>
int main()
{
int n;
char c;
scanf("%d", &n);
scanf("%c", &c);
printf("%d %d\n", n, c);
return 0;
} 를 실행하고, 콘솔에서 3을 치고 엔터를 누르면 |
많은 구현체에서 일치하는 동작을 보이고 있으면 바꾸는 편이 나아 보입니다. 표준 개정에 참고할 대표구현체 몇가지를 정해두면 어떨까 싶네요. C의 scanf의 해당 동작은 찾아보면 weird, unpredictable이라는 얘기가 종종 나오는 동작이에요. 다른 예를 들더라도 C의 동작을 참고하지는 않았으면 합니다. 프로그래밍 언어에서 보통은 하나의 동작은 한 가지 일을 일관성 있게 처리할 것을 기대하는데, C의 scanf는 %d다음의 공백을 일관성이 없이 처리합니다. %d가 정말로 정수만 처리하고 그뒤의 공백은 처리하지 않는다면 |
그럼 대부분의 구현체가 따라오는 공백을 함께 입력받으니까, 정수를 입력받을 때
로 하면 어떨까요? 또 공백 문자에 해당되는 문자는 무엇인지, 그리고 공백을 하나만 받을지 이어진 공백을 전부 받을지도 확실히 해야 할 것 같습니다. |
지금 말씀하신 동작은 충분히 지금 구현과도 부합하고 합리적인 동작이라고 생각됩니다. |
(ㅂ)
ㅇ 받침이 오면 표준 입력에서 정수 문자열을 받아 이에 해당하는 값을 지금 저장공간에 집어넣습니다.
(ㅁ)
ㅇ 받침이 오면 뽑아낸 값을 10진수로 출력합니다.
현재 대부분의 구현체에서
망
은 공백 없이 숫자만 출력하지만방
은 숫자가 공백으로 구분되어 있기를 요구합니다.저는 이걸 표준에 아예 명시를 하는 게 좋다고 생각하는데, 다른 분들의 의견은 어떠신가요.
(aheui/snippets#22 에서 처음 제기된 문제입니다)
The text was updated successfully, but these errors were encountered: