void main()
{
int a, b, c, d;
scanf("%d %d %d %d", &a, &b, &c, &d);
printf("%d", a-b+c);
}
다른사람이 짠건데
이렇게 int a,b,c,d에 쓰레기값넣어져있는채로
scanf로 값 받아도 되는거임?
그동안 무슨 오류났던거같아서
int a=0, b=0,c=0,d=0
만들고 scanf 써야되는줄알았는데;;
void main()
{
int a, b, c, d;
scanf("%d %d %d %d", &a, &b, &c, &d);
printf("%d", a-b+c);
}
다른사람이 짠건데
이렇게 int a,b,c,d에 쓰레기값넣어져있는채로
scanf로 값 받아도 되는거임?
그동안 무슨 오류났던거같아서
int a=0, b=0,c=0,d=0
만들고 scanf 써야되는줄알았는데;;
상관없음여
시발 ㅋㅋ 그동은무슨헛짓을한거지
초기화 안하고 쓰면 요즘은 컴파일러에서 다 워닝도 띄워줌
아 그래 초기화 안하고쓰면 워닝뜨는거맞지?
초기화안하고써도된다고근데? 그럼왜 워닝이나느거?
엥?근데왜 또 워닝안뜨지지금은
저건 주솟값 넘겨준거잖아
초기화 안하고 쓰면 요즘은 컴파일러에서 다 워닝띄우준다는건 어떤케이스말한것?
ㄴ int a; printf("%d", a); 같은 거 말하는 거지.
아..그런거야워닝뜨징...
scanf가 실패할 때도 존재하기 때문에 반드시 리턴 값을 확인하는 게 필수다. if(scanf(...) < 4) return 1; 식으로.
보통 값을 입력받을 때 프롬프트도 띄워주기 때문에 난 이렇게 짜징. if((printf("n = "), !scanf("%d", &n)) || (...) || (...)) return 1;
엥? 그게무슨말임? 글하나써주면안됨?
가령 숫자 네 개 입력받는 scanf 문에서 숫자 3개까지만 넣고 문자 a를 집어넣으면 scanf는 a, b, c까지만 입력받고 d에는 값을 넣지 않은 채로 리턴된다. scanf의 반환 값은 성공적으로 입력 받은 포맷 수이기 때문에 네 개면 if(scanf(...) < 4) return 1; 이런 식으로 실패를 감지할 수 있는 거지.
입력받는 값이 하나면 성공이면 1, 실패면 0이기 때문에 if( (printf("var = "), !scanf("%d", &var;)) || (printf("var2 = "), !scanf("%d", &var2;)) || (printf("var3 = "), !scanf("%d", &var3;)) || (printf("var4 = "), !scanf("%d", &var4;)) ) return 1; 식으로 if 문 하나에 다 묶어줄 수 있고 이게 보기에도 더 깔끔함.
그리고 main 함수처럼 한번만 불리는 함수는 재귀 같은 거 돌릴 일이 없으니깐 지역 변수를 스택을 쓰는 기본 자동 변수가 아니라 static 변수로 선언하는 것도 고려해 봄직 해.
scanf에 리턴값 확인해서 처리하는거 처음봄