출력과 동시에 프로그램 종료하기

한 줄에 return과 출력 동시에 하기

#include <stdio.h>
int main(){
    int n;
    while(1){
        scanf("%d",&n);
        if(n == 5){
            printf("YES");
            return 0;
        }
    }
}

위와 같이 5를 입력받으면 YES를 출력하고 프로그램을 종료하는 경우에

if(n == 5){
    printf("YES");
    return 0;
}

을 아래와 같이 바꿔 쓸 수 있습니다.

if(n == 5) return !printf("YES");

printf()의 경우에는 출력하는 문자열의 길이를 리턴합니다.

예를 들어 printf(“%d”,printf(“YES”));를 실행해보면 YES3이 나오는 것을 확인할 수 있습니다.

따라서 return !printf(“YES”);는 return !3;이 되고, 0 이외의 수는 true이기 때문에 return 0; 으로 해석할 수 있습니다.

두 번째로는 C++ std::cout의 경우입니다.

반환형이 int였던 printf()와는 다르게 cin과 cout의 반환형은 istream 객체입니다.
(예외적으로 조건문에서는 자동적으로 bool형으로 변환됨)

메인함수의 반환형은 int형이어야 하기 때문에 return cout « “YES”; 를 실행하면 오류가 뜨게 됩니다.

cout을 실행 한 뒤 바로 프로그램을 종료하는 방법은 아래와 같습니다.

#include <iostream>
using namespace std;
int main(){
  int n;
  while(1){
    cin >> n;
    if(n == 5) return cout << "YES",0;
  }
}

© 2018. All rights reserved.

Powered by Hydejack v8.5.2