쉼표 연산자(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
'programing' 카테고리의 다른 글
PHP 표준 입력? (0) | 2023.08.09 |
---|---|
Windows에서 github/git Checkout이 '오류: 잘못된 경로'를 반환합니다. (0) | 2023.08.09 |
복합 서버 선택기를 사용하여 서버를 선택한 후 30000ms 후 시간 초과가 발생했습니다. (0) | 2023.08.09 |
데이터베이스에서 실행 중인 예약된 작업을 나열하려면 어떻게 해야 합니까? (0) | 2023.08.09 |
JNI 대 유고 인민군 경기력 (0) | 2023.08.09 |