IT이야기

과제는 무엇을 반환하는가?

cyworld 2022. 5. 4. 21:43
반응형

과제는 무엇을 반환하는가?

왜 표현은 하는가?i = 22번으로 돌아가시겠습니까?이것은 무엇에 근거한 규칙인가?

printf("%d\n", i = 2 ); /* prints 2 */

나는 자바/C#에서 오랜 시간을 보낸 후 C 도메인에 있다.저의 무지를 용서해 주세요.

라고 평가한다.2표준이 그렇게 정의하고 있으니까C11 표준, 섹션 6.5.16:

할당 식에 할당 후 왼쪽 피연산자의 값이 있음

이런 것들을 허용하기 위해서입니다.

a = b = c;

(그런 코드가 좋은 것인지 아닌지에 대한 논쟁이 있긴 하지만)

우연히, 이 행동은 자바에서도 복제된다. (그리고 나는 C#에서도 마찬가지라고 확신한다.)

규칙은 의 우측 피연산자를 반환하는 것이다.=할당된 변수의 유형으로 변환됨.

int a;
float b;
a = b = 4.5; // 4.5 is a double, it gets converted to float and stored into b 
// this returns a float which is converted to an int and stored in a
// the whole expression returns an int

먼저 식을 고려한 다음 가장 왼쪽 변수를 인쇄한다.

예:

int x,y=10,z=5;
printf("%d\n", x=y+z );  // firstly it calculates value of (y+z) secondly puts it in x thirdly prints x

참고:

x++사후 처리 및++x접두사:

int x=4 , y=8 ;
printf("%d\n", x++ );  // prints 4
printf("%d\n", x );    // prints 5
printf("%d\n", ++y );    // prints 9
  1. 값 2를 i에 할당
  2. i 변수 평가 및 표시

C(대부분)에서 모든 표현2가지를 가진다.
1) 값
2) 부작용

표현식의 값

2

이다2; 그 부작용은 "미흡"이다.

표현식의 값

i = 2

이다2; 그것의 부작용은 "이름있는 물체의 값 변경"이다.i2"까지;

참조URL: https://stackoverflow.com/questions/9514569/what-does-an-assignment-return

반응형