programing

쉼표 연산자(c)

abcjava 2023. 8. 9. 20:27
반응형

쉼표 연산자(c)

#include<stdio.h> 
int main(void) {
   int a;
   a = (1, 2), 3; 
   printf("%d", a);
   return 0;
}

출력: 2
출력이 2라는 것을 설명할 수 있는 사람이 있습니까?

출력이 2라는 것을 설명할 수 있는 사람이 있습니까?

왜냐하면 양도사업자의 우선순위(=)이 쉼표 연산자(,).

따라서 다음과 같은 문장이 있습니다.

a = (1, 2), 3;

다음과 같습니다.

(a = (1, 2)), 3;

그리고 그 표현은(1, 2)로 평가함.2.

출력이 2라는 것을 설명할 수 있는 사람이 있습니까?

성명서에서

a = (1, 2), 3;   

,사용됨은 쉼표 연산자입니다.의 연산자 우선 순위가 더 높기 때문입니다.=의 연산자보다 더 많은 연산자,연산자, 식 피연산자(1, 2)에 결합합니다.=~하듯이

(a = (1, 2)), 3;  

쉼표 연산자의 경우, 쉼표 연산자의 왼쪽 피연산자가 식을 무효로 평가된 다음 오른쪽 피연산자가 평가되고 결과가 오른쪽 피연산자의 값과 유형을 갖습니다.

여기에는 두 개의 쉼표 연산자가 있습니다.식에서 첫 번째 쉼표 연산자의 경우(1, 2),1표현을 무효화하도록 평가될 것이고 그리고 나서.2평가되고 할당될 것입니다.a.
이제 부작용은a두 번째 쉼표 연산자의 오른쪽 피연산자가 발생했습니다.3평가될 것이고 표현식의 값(a = (1, 2)), 3될 것이다3.

결과:

a = x, y     =>     x

a = (i, j)   =>     j

그러므로, 만약 우리가 가지고 있다면:

x = (1 , 2)

a = (1 , 2) , 3     =>     2

여기에 언급된 바와 같이:

쉼표 연산자는 세미콜론이 문을 종료하는 방법과 유사한 방식으로 표현식(값이 있는)을 구분하고, 표현식 시퀀스는 괄호 안에 포함됩니다. (a, b, c)는 쉼표로 구분된 표현식 시퀀스로, 마지막 표현식 cw로 평가됩니다.hile {a;b;c;}은(는) 일련의 문이며, 어떤 값으로도 평가되지 않습니다.(비블록) 문 끝에 나타나는 세미콜론(세미콜론 종료 문)과 달리 쉼표는 두 식(쉼표로 구분된 식) 사이에서만 발생할 수 있습니다.

쉼표 연산자는 C 연산자보다 우선 순위가 낮으며 시퀀스 점 역할을 합니다.쉼표와 세미콜론의 조합에서 세미콜론은 쉼표보다 우선 순위가 낮으며, 세미콜론은 문장을 구분하지만 쉼표는 문장 내에서 발생합니다. 이는 일반적인 구두점으로 사용하는 것과 일치합니다. a, b; c, d는 (a, b); (c, d)로 그룹화됩니다. 왜냐하면 이들은 두 개의 별개의 문장이기 때문입니다.

이것이 당신의 질문에 대답하기를 바랍니다.

언급URL : https://stackoverflow.com/questions/46177275/comma-operator-in-c

반응형