lee1201zxc   2년 전

값을 두개씩 반환할수있게요.

dps2   2년 전

결론부터 말씀드리자면 C언어에서는 불가능합니다.


,는 C에서 연산자로 쓰입니다.

앞에 연산한 것을 무시하고 뒤에 있는 수식을 연산합니다.

a = (3,5) 라고 적는다면 3,5를 계산하게 되고(연산자 우선순위 때문에 a=3,5와 a=(3,5)의 결과가 다릅니다)

앞을 무시하므로 a=5가 됩니다.

또한 ,는 변수를 분리하는 separator로도 쓰입니다. 이때는 연산자가 아님에 주의하셔야합니다.

일반적인 함수 호출에서 쓰이는 ,는 separator입니다.

질문자님께서 올리신 코드는 ,를 연산자와 separator 구분없이 쓰고 계십니다.

대부분의 컴파일러는 ? : 사이에 있는 ,는 연산자로 뒤에 있는 ,는 separator로 판단할 거라 생각합니다.

그렇다면 제가 첨부한 코드에서 x를 1로하던지 0으로 하던지 둘다 뒤에 4가 프린트될 것입니다.

그리고 x의 값에 따라 2아니면 3이 출력될 것입니다.(1,2라면 ,연산에 의해 1이 무시됩니다.)

C언어에서는 값을 하나만 리턴하게끔 설계되어 있습니다.

사실 아주 특이하게 코딩하신다면 불가능한 것은 아니지만...

일반적으로는 불가능하다고 생각하시면 될 것 같습니다.

양쪽다 삼항연산자를 쓰시거나 아님 if문 처리하시는 것을 추천드립니다.

lee1201zxc   2년 전

이해가 잘되었습니다. 감사합니다.

댓글을 작성하려면 로그인해야 합니다.