programing

연산 c=a+++b는 무엇을 의미합니까?

css3 2023. 9. 17. 13:28

연산 c=a+++b는 무엇을 의미합니까?

다음 코드는 나를 혼란스럽게 합니다.

int a=2,b=5,c;
c=a+++b;
printf("%d,%d,%d",a,b,c);

저는 생산량이 3,5,8일 것으로 예상했는데, 주로 a++가 2 +1을 의미하고 3 +5가 8이기 때문에 3,5,8을 예상했습니다.결과가 3,5,7로 나왔습니다. 왜 이런지 설명해주실 수 있나요?

라는 말이 있습니다.c = a++ + b,그리고.a++즉, 값을 취한 후의 증가를 의미합니다.a계산을 해 보다a + b == 2 + 5.

제발, 이런 코드는 절대 쓰지 마.

Maximal Munch Rule 은 다음 식에 따라 다음과 같이 구문 분석됩니다.

c = a++ + b;

그것은,a는 후 증분됩니다(a++) 및 현재 값입니다.a(사후진단 전)에 대한 조치가 취해집니다.+와의 작전.b.

a++는 post incremental입니다. 즉, 식을 a의 값을 취한 다음 1을 더한 것입니다.
c = ++a + b는 당신이 기대하는 것을 할 것입니다.

이것은 잘못된 프로그래밍 스타일의 예입니다.

꽤 읽을 수 없지만 증분을 게시합니다.a그래서 그것은 현재의 가치를 합합니다.a로.b그리고 그 후에 점점 더 늘어갑니다.a!

식 다음에 a++가 평가됩니다.

c = ++a + b; 당신이 생각한 것을 당신에게 줄 것입니다.

식에서 a의 값을 평가한 후 a++라는 후 증분 연산자는 a의 값을 변경합니다.a의 원래 값이 2이므로 c를 계산하는 데 사용됩니다. a의 값은 ++가 평가된 후 새 값을 반영하도록 변경됩니다.

a++ + b ..그것은 결과를 7을 주고 a의 식 값이 3으로 업데이트 된 후에는 후 증분 연산자로 인해

Longest Match 규칙에 따르면 컴파일러의 어휘 분석 단계에서 a++++b로 구문 분석됩니다.따라서 결과 출력.

여기서 c= a++b; c= (a++) +b; 즉, 사후 증분을 의미합니다.a++에서는 a, b 및 c를 인쇄하는 다음 단계에서 변경 사항이 발생합니다.++a, 즉 접두사 증가에서 변경은 동일한 단계에서 발생하고 출력은 8이 됩니다.

언급URL : https://stackoverflow.com/questions/7485088/what-does-the-operation-c-ab-mean