TIL - 2021.2.15

Wanna be __·2021년 2월 15일
0

TIL

목록 보기
14/45
post-thumbnail

Today, I Learned

  1. R-value, L-value 완벽 정리

좋은 글을 참고하여 위 개념을 조금 더 확실하게 이해하였다.

기본

int x = 666; 

x는 변수로 l-value, 666은 상수로 r-value (가능)

int *y = &x

y는 변수 l-value, x는 l-value이나, &연산자를 통해서 r-value로 바뀜
(+ & 연산자는 l-value를 r-value로 바꿔주는 연산자이므로, &666은 불가(666이 l-value가 아님))

int setValue()
{
    return 6;
}

// ... somewhere in main() ...

setValue() = 3; // error!

함수는 r-value를 return하기 때문에, = 연산자의 왼쪽에 올 수 없음!

int global = 100;

int& setGlobal()
{
    return global;    
}

// ... somewhere in main() ...

setGlobal() = 400; // OK

함수는 항상 = 연산자의 왼쪽에 올 수 없나? 아님. 함수가 l-value를 return 한다면 이 또한 가능한 사용법

l-value to r-value?

int x = 1;
int y = 3;
int z = x + y;   // ok

+는 r-valiue와 r-value를 입력 받고, r-value를 리턴하는데 여기서 x, y는 l-value이지 않는가? 암묵적으로 l-value에서 r-value로 변환된거임

then, how about r-value to l-value?

Nope. It's not a technical limitation, though: it's the programming language that has been designed that way.

즉, 여기서 나오는게 l-value 참조임.
(memory location에 대한 정보를 가지고 있는, 존재하는)l-value값을 받고 여기에 접근할 수 있는 변수를 만드는것

int& yref = 10;

따라서 위 코드는 불가능함. 10은 constant로 주소에 대한 정보도 없을 뿐더러, l-value로 존재하지도 않기 때문

심화

const int& ref = 10;

받아들이기 힘들지만, 가능하다. const + l-value 참조를 하면 상수값도 받을 수 있다.

// the following...
const int& ref = 10;

// ... would translate to:
int __internal_unique_name = 10;
const int& ref = __internal_unique_name;

위와 같은 내부 변환 과정을 거쳐 할당되는거임

  1. Nginx의 업로드 용량 수정
http{
 
 중략
 
client_max_body_size 128M;

위와 같이 client_max_body_size 옵션을 통해 웹서버에서 처리할 최대 파일 용량을 설정할 수 있다. default 값은 1M으로 Image를 업로드하기도 작은 수준이었는데, 3M 이미지를 업로드 하다 에러가 생겨 위와 같이 조치하여 해결하였다.

Today, I Did

  1. C++ 상속..
    여기까지 오는데 생각보다 오래 걸렸다! 1월중순에 올 수 있을것 같았는데...
profile
성장하는 개발자

0개의 댓글