쉼표 연산자는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!