일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Qubit
- kubernetes
- HA
- 양자역학의공준
- quantum_computing
- 반도체
- flash_memory
- deep_learning
- jhDNN
- nvidia
- FPGA
- 쿠버네티스
- 반도체기초
- sycl
- CuDNN
- cloud
- 클라우드
- dnn
- CUDA
- GPU
- SpMM
- Compression
- Semiconductor
- 딥러닝
- stl
- C++
- convolution
- POD
- jhVM
- DRAM
Archives
- Today
- Total
Computing
[문법] 대입 연산자의 반환 (Return 값) 본문
항상 헷깔리고 까먹어서 정리한다.
=, +=, -=, *= 등과 같은 대입 연산자 (Assignment operator, 대입문, 할당문, Assignment statement)는 대입 연산자의 왼쪽 operand의 reference가 반환된다 [1,2].
int a, b, c;
a = 10 // 반환값: reference of a (10)
a = b = 20 // a = (b = 20) --> a = 20
(c = 10) = 30 // 1. (c=10)가 c의 reference를 반환하기에 최종 c=30이 됨
std::cout << a << " " << b << " " << c << std::endl; // 20 20 30
이러한 대입 연산자의 특성에 의해 다음 두 가지 코드 구현이 가능하다. 가능하다고 좋다는 것은 아니고, 특히 2번의 경우는 사용이 지양된다고 한다[3]. (그래도 이전 레거시 코드를 읽다보면 어쩌다 한번쯤은 만나보게 되더라)
/* *******************************************
* 1 여러 변수 한줄에 대입하기
* *******************************************/
int a, b, c, d, e, f;
a = b = c = d = e = f = 1
/* *******************************************
* 2 assignment in if statement
* *******************************************/
int getErrorCode() {
if (/* error 발생 */) {
return 어떤 에러코드
} else {
return 0; // 에러 없음
}
}
int main (void) {
int error;
if ( error = getErrorCode() ) {
printf("Error occurred!!");
}
}
Reference
[1] C++ — ISO/IEC 14882:2003(E)
[2] https://learn.microsoft.com/en-us/cpp/cpp/assignment-operators?view=msvc-170#result-of-assignment-operators
[3] https://stackoverflow.com/a/17681782/13276100
'Programming > C++' 카테고리의 다른 글
[C++ STL] std::set을 통한 중복 제거 (Duplicate 판단 기준) (0) | 2024.05.09 |
---|---|
[C++] 진짜 랜덤 숫자 생성하기 (std::random_device) (2) | 2024.04.07 |
[c++] 싱글톤 디자인 패턴 최적 구현 (Singleton design pattern) (1) | 2023.11.26 |
[STL] Set, Map Custom Sort 구현 방법 (Red-black tree) (4) | 2023.10.18 |
스마트 포인터 정리 (Smart Pointer, unique_ptr, shared_ptr) (0) | 2023.08.19 |