반응형
과제는 무엇을 반환하는가?
왜 표현은 하는가?i = 2
2번으로 돌아가시겠습니까?이것은 무엇에 근거한 규칙인가?
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
- 값 2를 i에 할당
- i 변수 평가 및 표시
C(대부분)에서 모든 표현은 2가지를 가진다.
1) 값
2) 부작용
표현식의 값
2
이다2
; 그 부작용은 "미흡"이다.
표현식의 값
i = 2
이다2
; 그것의 부작용은 "이름있는 물체의 값 변경"이다.i
2"까지;
참조URL: https://stackoverflow.com/questions/9514569/what-does-an-assignment-return
반응형
'IT이야기' 카테고리의 다른 글
소포 없이 수업 이름을 얻는 방법은? (0) | 2022.05.04 |
---|---|
하위에서 상위로의 Vuetify 대화 상자 세트 프로펠러 돌연변이 (0) | 2022.05.04 |
vuejs에서 옵션을 선택할 때 옵션 그룹 레이블을 얻는 방법은? (0) | 2022.05.04 |
Vue Js의 확인란 배열 (0) | 2022.05.04 |
C에서 stdin 및 stdout 재라우팅 (0) | 2022.05.04 |