profile-img
์ง€๋ฐ์ด์˜ ํ‹ฐ์Šคํ† ๋ฆฌ
images/slide-image
 
 
 

## Assuming that you are not implementing a portion of the standard library, which of these are legal identifiers. (This means that they follow the syntax rules for C++)

 

- switch 

- _int 

- string 


 

what is  L-Value, R-Value or Non-Modifiable L-Value. ??? 

 

In C++ and many other programming languages, the terms "L-value" and "R-value" are used to classify expressions based on whether they can appear on the left side of an assignment (`=`) operator or not. Additionally, there's a concept called "non-modifiable L-value," which refers to an L-value that cannot be modified. Here's an explanation of these terms:

1. **L-Value (Left Value)**:
   - **Definition**: An L-value is an expression that refers to a memory location, and it can appear on the left side of an assignment operator (`=`). In other words, it represents an object or variable that can be modified.
   - **Example**: Variables, array elements, and non-const references are typically L-values. For instance, `int x = 5;` - here, `x` is an L-value.

2. **R-Value (Right Value)**:
   - **Definition**: An R-value is an expression that represents a value and cannot appear on the left side of an assignment operator. R-values are typically temporary and may not have a memory location.
   - **Example**: Literal values (`5`, `"hello"`), the result of an expression (`x + y`), and function return values are often R-values.

3. **Non-Modifiable L-Value**:
   - **Definition**: A non-modifiable L-value is an expression that refers to a memory location like an L-value but cannot be modified. It represents an object that is marked as const.
   - **Example**: A const variable (`const int y = 10;`) is a non-modifiable L-value because you cannot modify its value.

Here are some examples to illustrate these concepts:

```cpp
int x = 5;         // 'x' is an L-value.
int y = x + 3;     // 'x + 3' is an R-value (temporary result).
const int z = 7;   // 'z' is a non-modifiable L-value (const variable).

x = 10;            // 'x' is an L-value, and it can be modified.
// 'y = 15;' would be a compilation error because 'y' is an R-value.
// 'z = 8;' would be a compilation error because 'z' is a non-modifiable L-value.
```



In summary, L-values are expressions that can appear on the left side of an assignment, R-values are expressions that represent values and cannot be on the left side of an assignment, and non-modifiable L-values are L-values that are marked as const and cannot be modified.

 


 

1. **๋ฌธ์ž์—ด ๊ธธ์ด() ๋ฉค๋ฒ„ ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค:** ์•„๋‹ˆ์š”, ๋ฌธ์ž์—ด ํด๋ž˜์Šค์˜ `length()` ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋Š” `string::size_type`์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ `size_t`๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

2. **ํ•ด๋‹น ํ˜•์‹์˜ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:** ์˜ˆ, `string::size_type` ํ˜•์‹์˜ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฌธ์ž์—ด๊ณผ ๊ด€๋ จ๋œ ํฌ๊ธฐ ๋ฐ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. **`size_t`์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค:** ์ผ๋ฐ˜์ ์œผ๋กœ `string::size_type`๊ณผ `size_t`๋Š” ๋™์ผํ•˜๊ฑฐ๋‚˜ ๋งค์šฐ ์œ ์‚ฌํ•œ ํ˜•์‹์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‘ ํ˜•์‹์ด ํ•ญ์ƒ ๋™์ผํ•˜๋‹ค๊ณ  ๋ณด์žฅ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

4. **unsigned ์ •์ˆ˜ ํ˜•์‹์ด๋ฉฐ ์–ด๋–ค ํฌ๊ธฐ์˜ ํ˜•์‹์ž…๋‹ˆ๋‹ค:** ๋งž์Šต๋‹ˆ๋‹ค, `string::size_type`์€ ๋ณดํ†ต ์–ด๋–ค ํฌ๊ธฐ์˜ unsigned ์ •์ˆ˜ ํ˜•์‹์ž…๋‹ˆ๋‹ค.

5. **๋ฌธ์ž์—ด size() ๋ฉค๋ฒ„ ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค:** ๋งž์Šต๋‹ˆ๋‹ค, ๋ฌธ์ž์—ด ํด๋ž˜์Šค์˜ `size()` ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋Š” `string::size_type`์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 
 

if ๋’ค์— ; ๋ถ™์–ด์„œ ์ •๋‹ต์€ 3๋ฒˆ ..

 

'เซฎโ‚หถแต” แต• แต”หถโ‚Žแƒโ™ก/coding' Related Articles +