>  기사  >  백엔드 개발  >  C 언어의 쉼표 연산자 란 무엇입니까?

C 언어의 쉼표 연산자 란 무엇입니까?

hzc
hzc원래의
2020-07-02 11:40:057811검색

쉼표 연산자는 C 언어에서 여러 표현식을 쉼표로 구분할 수 있다는 의미입니다. 쉼표로 구분된 표현식의 값은 별도로 정산되지만 전체 표현식의 값은 마지막 표현식의 값이 됩니다.

C 언어의 쉼표 연산자 란 무엇입니까?

쉼표 연산자는 C 언어에서 여러 표현식을 쉼표로 구분할 수 있다는 의미입니다. 쉼표로 구분된 표현식의 값은 개별적으로 정산되지만 전체 표현식의 값은 마지막 값이 됩니다. 표현.값.

예:

int a1,a2,b=2,c=7,d=5; // 1행int a1,a2,b=2,c=7,d=5; // 第1行

a1=(++b,c--,d+3); // 第2行

a2=++b,c--,d+3; //第3行

对于给a1赋值的代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是(d+3)的值,为8,所以a1的值为8。

对于给a2赋值的代码,也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高)虽然最终表达式的值虽然也为8,但b=4(第2行代码运算完时,b=3,即第3行代码运行时,b的值为4),所以a2=4。

注意:逗号运算的结合性是从左至右,完毕之后整个表达式的值是最后一个表达式的值。

例子:int a[2],x=2,y=5;

a[0]=(x+3,y++,x++);那么最终结果是:a[0]=2 x=3 y=6;

为何a[0]=2:因为(x++)是运算之后再自加

a[1]=(x++,x+3,x+7);那么最终结果是:a[1]=10 ,x=3

再来一个关于结合性的例子:

int i=24;

int n = (i++,i++,i++,i++); // n == 27

a1=(++b,c- - ,d+3); // 2번째 줄

a2=++b,c--,d+3; // 3번째 줄

은 a1을 할당하기 위한 코드입니다. 세 개의 표현식이 쉼표로 구분되어 있으므로 최종 값은 마지막 표현식의 값(d+3)의 값이 되어야 하며 이는 8이므로 a1의 값은 8입니다.

a2에 값을 할당하는 코드에는 3개의 표현식도 있습니다. 이때 3개의 표현식은 a2=++b, c--, d+3, (이는 할당 연산자가 쉼표보다 우선순위가 높기 때문입니다. 연산자 높음) 최종 표현식의 값도 8이지만, b=4 (두 번째 줄의 코드가 완성되면 b=3, 즉 세 번째 줄의 코드가 실행되면, b의 값은 4 )이므로 a2=4입니다. 🎜🎜참고: 쉼표 연산의 연관성은 왼쪽에서 오른쪽으로 완료 후 전체 표현식의 값은 마지막 표현식의 값입니다. 🎜🎜예: int a[2],x=2,y=5;🎜🎜a[0]=(x+3,y++,x++); 그러면 최종 결과는 다음과 같습니다. a[0]=2 x=3 y=6;🎜🎜왜 a[0]=2: 작업 후에 (x++)가 추가되기 때문입니다🎜🎜 a[1]=(x++,x+3,x+7);최종 결과는 다음과 같습니다.a[1]=10, x=3🎜🎜한 가지 더 연관성 예: 🎜🎜int i=24;🎜🎜int n = (i++,i++,i++,i++) // n == 27🎜🎜쉼표로 인해 연산 기호의 연관성은 왼쪽에서 오른쪽으로 이루어지므로 4개의 i++가 순차적으로 실행되지만 마지막 i++는 할당이 끝날 때까지 연산되지 않으므로 최종적으로 27을 반환합니다. 🎜🎜추천 튜토리얼: "🎜c 언어 튜토리얼🎜"🎜

위 내용은 C 언어의 쉼표 연산자 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.