728x90

 

 

String and character literals (C++)

How to declare and define string and character literals in C++.

docs.microsoft.com

C++ 은 다양한 문자열과 문자 타입을 지원하고 이러한 타입의 각각의 리터럴 값을 표현하는 방식을 제공합니다. 당신 코드에서 당신은 문자열 셋을 사용하는 문자와 문자열 리터럴 내용을 표현할 수 있습니다. 유니버스 문자 이름들과 이스케이프 문자들은 당신이 단지 기본 문자열 셋을 사용하면서 어떤 문자열이든 표현하게 합니다. 저수준 리터럴은 당신이 이스케이프 문자열을 피하거나 문자열 리터럴의 모든 유형을 표현하게 합니다. 당신은 또한 std::string 문자열을 추가적인 구성이나 변환 절차 없이 만들 수 있습니다.

#include <string>
using namespace std::string_literals; // enables s-suffix for std::string literals

int main()
{
    // Character literals
    auto c0 =   'A'; // char
    auto c1 = u8'A'; // char
    auto c2 =  L'A'; // wchar_t
    auto c3 =  u'A'; // char16_t
    auto c4 =  U'A'; // char32_t

    // Multicharacter literals
    auto m0 = 'abcd'; // int, value 0x61626364

    // String literals
    auto s0 =   "hello"; // const char*
    auto s1 = u8"hello"; // const char*, encoded as UTF-8
    auto s2 =  L"hello"; // const wchar_t*
    auto s3 =  u"hello"; // const char16_t*, encoded as UTF-16
    auto s4 =  U"hello"; // const char32_t*, encoded as UTF-32

    // Raw string literals containing unescaped \ and "
    auto R0 =   R"("Hello \ world")"; // const char*
    auto R1 = u8R"("Hello \ world")"; // const char*, encoded as UTF-8
    auto R2 =  LR"("Hello \ world")"; // const wchar_t*
    auto R3 =  uR"("Hello \ world")"; // const char16_t*, encoded as UTF-16
    auto R4 =  UR"("Hello \ world")"; // const char32_t*, encoded as UTF-32

    // Combining string literals with standard s-suffix
    auto S0 =   "hello"s; // std::string
    auto S1 = u8"hello"s; // std::string
    auto S2 =  L"hello"s; // std::wstring
    auto S3 =  u"hello"s; // std::u16string
    auto S4 =  U"hello"s; // std::u32string

    // Combining raw string literals with standard s-suffix
    auto S5 =   R"("Hello \ world")"s; // std::string from a raw const char*
    auto S6 = u8R"("Hello \ world")"s; // std::string from a raw const char*, encoded as UTF-8
    auto S7 =  LR"("Hello \ world")"s; // std::wstring from a raw const wchar_t*
    auto S8 =  uR"("Hello \ world")"s; // std::u16string from a raw const char16_t*, encoded as UTF-16
    auto S9 =  UR"("Hello \ world")"s; // std::u32string from a raw const char32_t*, encoded as UTF-32
}

 

문자열 리터럴은 접두사가 없거나 좁은 범위 문자 utf-8, 넓은 범위 문자 utf16,utf32 인코딩과 같은 제각각의 u8, L, u 접두사를 사용합니다. 저수준 문자열 리터럴은 이러한 인코딩의 저 수준으로 대응되는 r, u8r, lr, ur과 같은 접두사를 갖을 수 있습니다. 임시거나 정적 std::string 값을 만들기 위해서 당신은 문자열 리터럴 또는 저수준 리터럴을 s 접미사와 같이 쓸 수 있습니다. 더 많은 정보는 아래에 String Literals를 보세요. 더 많은 기본 문자열 집합이나 유니버스 문자열 이름, 당신 소스코드에 확장된 코드페이지 캐릭터 사용에 대한 것은 Character sets를 보세요.

 

Character Literals

캐릭터 리터럴은 상수 캐릭터로 구성됩니다. 이것은 따옴표에 둘러쌓인 문자들로 표현됩니다. 다섯가지 종류의 문자 리터럴이 있습니다.

- char의 오리지널 문자 리터럴, 예시 'a'

- char(C++20에서는 char8_t) 타입의 utf8 문자 리터럴, 예시 u8'a'

- wchar_t 의 넓은 문자 리터럴, 예시 L'a'

- char16_t의 utf-16 문자 리터럴, 예시 u'a'

- char32_t의 utf-32 문자 리터럴, 예시 U'a'

 

문자 리터럴에 사용되는 문자는 예약된 \,', 뉴라인을 제외하면 어떤 문자도 될수 있다. 예약된 문자들은 이스케이프 시퀀스로 지정될 수 있다. 문자들 범용문자 이름으로 지정된다. 그 타입이 문자를 포함할 만큼 충분히 크다면.

 

인코딩

문자 리터럴은 그들의 접두사를 기반으로 다르게 인코딩됩니다.

 

- 접두사가 없는 문자는 오리지널 문자 리터럴 입니다. 문자셋 실행에서 표현되는 싱글 문자나, 이스케이프 문자 또는 범용 문자 이름을 포함하는 문자 리터럴의 오리지널 값은 문자셋 실행에서 인코딩의 숫자값과 동일합니다. 하나 이상 문자, 이스케이프시퀀스 또는 범용 문자 이름을 포함하는 오리지널 문자는 멀티문자 리터럴입니다. 실행 문자 세트에서 표현할 수 없는 멀티 문자 리터럴 또는 일반 문자 리터럴은 type int 와 이며 그 값은 구현 정의 입니다. MSVC에 대해서는 아래 Microsoft-specific section을 보세요.

 

- 접두사 L로 시작하는 캐릭터 리터럴은 광범위한 문자 리터럴이다. 싱글 문자, 이스케이프 시퀀스, 범용 문자 이름을 포함하는 광범위한 문자 리터럴 값은 문자 리터럴이 와이드 문자셋에서 표현되지 않는한 와이드 캐릭터 문자셋 실행에서 인코딩 수치 값과 동일합니다. 단 이경우 값은 구현정의됩니다.멀티 문자들과 이스케이프 시퀀스 또는 범용 캐릭터 이름을 포함하는 와이드 캐릭터 문자열의 값은 구현정의입니다. MSVC에 대해서는 아래 Microsoft-specific 섹션을 보세요.

 

- u8 접두사로 시작하는 문자 리터럴은 utf8 문자 리터럴이다. 싱글 문자, 이스케이프 시퀀스 또는 범용 캐릭터 이름을 포함하는 utf8 문자 리터럴 값은 utf8 코드 단독 코드 단위로 표현된다면 iso 10646 코드 포인트와 동일한 값을 갖는다. (C0 Control 과 기본 라틴 유니코드 블록에 해당).  단독 utf8 코드 단위로 표현되지 않는 값은 잘못된 형식입니다. 하나 이상의 문자, 이스케이프 시퀀스, 범용 문자 이름을 포함하는 utf8 문자 리터럴은 잘못된 형식입니다.

 

- u 접두사로 시작하는 문자 리터럴은 utf16 문자 리터럴이다. 단독 문자, 이스케이프 시퀀스, 또는 범용 캐릭터 이름을 포함하는 utf16값은 iso 10646 코드 포인트와 동등하다. 만약 그것이 단독 utf16코드 단위로 표현되었다면. (기본 멀티 2중 언어 플레인에 대응하는) 만약 그 값이 단독 utf16 코드 단위르롤 표현하지 않는다면 그것은 잘못된 형식이다. 하나의 이상의 문자, 이스케이프 문자열 또는 범용 문자 이름을 포함하는 utf16문자 리터럴은 잘못된 형식이다.

 

- U 접두사로 시작하는 문자 리터럴은 utf-32 문자 리터럴이다. 단독 문자, 이스케이프 시퀀스, 범용 문자 이름을 포함하는 utf32 문자 리터럴 값은 iso 10646 코드 포인트 값과 동일하다. 하나 이상의 문자, 이스케이프 시퀀스, 범용 문자 이름을 포함하는 utf32 문자 리터럴은 잘못된 형식이다.

 

Escape sequences

세 종류의 이스케이프 시퀀스가 있다. simple, octal, and hexidecimal. 이스케이프 시퀀스는 다음값 중 하나가 될 수 있다.

newline \n
backslash \\
horizontal tab \t
question mark ? or \?
vertical tab \v
single quote \'
backspace \b
double quote \"
carriage return \r
the null character \0
form feed \f
octal \ooo
alert (bell) \a
hexadecimal \xhhh

octal 이스케이프 시퀀스는 백슬래쉬 이후의 하나에서 세개의 8진수가 나오는 시퀀스이다. octal 이스케이프 시퀀스는 세번째 진수 전에 8진수가 아닌 문자를 만난다 면 그 처음 문자에서 종료됩니다. 8진수 값의 가장 큰값은 \377입니다.

 

16진수 이스케이프 시퀀스는 백슬래쉬 다음에 x 그 다음에 하나 이상의 16진수가 옵니다. 앞의 0은 무시된다. 일반문자나 u8 접두사 캐릭터 리터럴에서 최대 16진수 값은 0xFF이다. L 또는 u 넓은 캐릭터 리터럴에서의 최대 16진수 값은 0xFFFF 이다. U 접두사 넓은 캐릭터 맅럴에서 최대 16진수 값은 0xFFFFFF이다.

 

다음 샘플 코드는 일반문자 리터럴을 사용하는 이스케이프 캐릭터 예제를 보여준다. 다른 문자 리터럴 타입에도 동일한 이스케이프 시퀀스 구분은 유효합니다.

 

#include <iostream>
using namespace std;

int main() {
    char newline = '\n';
    char tab = '\t';
    char backspace = '\b';
    char backslash = '\\';
    char nullChar = '\0';

    cout << "Newline character: " << newline << "ending" << endl;
    cout << "Tab character: " << tab << "ending" << endl;
    cout << "Backspace character: " << backspace << "ending" << endl;
    cout << "Backslash character: " << backslash << "ending" << endl;
    cout << "Null character: " << nullChar << "ending" << endl;
}
/* Output:
Newline character:
ending
Tab character:  ending
Backspace character:ending
Backslash character: \ending
Null character:  ending
*/

백슬래쉬 문자는 라인 끝에 위치 하면 라인 지속 문자인다. 만약 당신이 백슬래쉬를 캐릭터 리터럴로 표현하길 원한다면 당신은 반드시 행에 2개의 백슬래쉬를 사용해요한다. 라인 지속 문자에 대해 더 알고 싶으면 봐라 Phase of Thranslation

 

마이크로소프트 관련

좁은 멀티문자 리터럴에서 값을 만들기 위해서는 컴파일러는 문자나 문자 시퀀스를 반점 사이에서 32bit integer에서 8bit로 변경합니다. 리터럴에 멀티 문자는 높은 순에서 낮은순으로 요구되는 바이트에 대응하여 채웁니다. 그리고 컴파일러는 정수형을 보통의 규칙에 따라 목적지 타입으로 변경합니다. 예를 들어 char 값을 만들기 위해서 컴파일러는 낮은 순서의 byte를 갖습니다. wchar_t, char16_t를 만들기 위해서는 컴파일러는 낮은 순서 워드를 갖습니다. 컴파일러는 어떤 비티는 할당돤 바이트나 워드 위에 설정된다면 결과는 잘릴 수 있다고 경고합니다.

char c0    = 'abcd';    // C4305, C4309, truncates to 'd'
wchar_t w0 = 'abcd';    // C4305, C4309, truncates to '\x6364'
int i0     = 'abcd';    // 0x61626364

 

3개이상의 진수를 포함하는 것을 나타내는 8 이스케이프 시퀀수는 3 진수 8 시퀀스로 다뤄집니다. 그 다음 진수는 멀티문자 리터럴에 문자로 취급됩니다. 그것은 놀라운 결과를 나타냅니다. 예시.

char c1 = '\100';   // '@'
char c2 = '\1000';  // C4305, C4309, truncates to '0'

8진수가 아닌 문자를 포함하는 걸로 보이는 이스케이프 시퀀스는 마지막 8진수 문자까지 8진수 시퀀스로 평가됩니다. 그다음 남은 문자들은 다중 문자 리터럴의 후속 문자로 평가됩니다. 만약 첫 8진수가 아닌 문자가 10진수라면 c4125 경고가 발생합니다. 예시

char c3 = '\009';   // '9'
char c4 = '\089';   // C4305, C4309, truncates to '9'
char c5 = '\qrs';   // C4129, C4305, C4309, truncates to 's'

\377보다 더 큰 8진수 이스케이프 시퀀수는 에러 c2022를 발생합니다. '10진수값":매우 큰 문자.

 

16진수나 16진수가 아닌 문자를 갖은 것으로 보이는 이스케이프 시퀀스는 마지막 16진수 문자까지 16진수를 포함하는 멀티 문자로 평가됩니다. 16진수를 포함하지 않는 16진수 이스케이프 시퀀스는 컴파일 에러 c2153을 발생 시킵니다. "16진수 리터럴은 반드시 최소한 하나의 16진수를 가져야 한다"

char c6 = '\x0050'; // 'P'
char c7 = '\x0pqr'; // C4305, C4309, truncates to 'r'

L접두사가 붙는 광범위 문자가 멀티문자 시퀀스를 포함한다면 그 값은 첫번째 값으로 값이 매겨지거나, 컴파일러가 경고 c4066을 발생시킨다. 후속 문자들은 무시된다 본래 멀티문자 리터럴의 동등한 동작과 달리 후속 문자들은 무시됩니다.

wchar_t w1 = L'\100';   // L'@'
wchar_t w2 = L'\1000';  // C4066 L'@', 0 ignored
wchar_t w3 = L'\009';   // C4066 L'\0', 9 ignored
wchar_t w4 = L'\089';   // C4066 L'\0', 89 ignored
wchar_t w5 = L'\qrs';   // C4129, C4066 L'q' escape, rs ignored
wchar_t w6 = L'\x0050'; // L'P'
wchar_t w7 = L'\x0pqr'; // C4066 L'\0', pqr ignored

마이크로 소프트 관련 섹션은 여기 맨 끝에

 

범용 문자 이름들

문자 리터럴과 네이티브 문자열 리터럴에서 어떤 문자나 범용 문자 이름을 나타낼 수 있다. 범용 문자 이름은 \U 접두사를 갖고 그 다음 8진수 유니코드 포인트가 오거나 \u접두사를 갖고 그다음 4진수 유니코드 포인트가 오는 형식을 갖는다. 모든 8진수 4진수는 개별적으로 더 나은 유니버셜 문자 이름 형식을 만들기 위해 제시된다.

wchar_t w1 = L'\100';   // L'@'
wchar_t w2 = L'\1000';  // C4066 L'@', 0 ignored
wchar_t w3 = L'\009';   // C4066 L'\0', 9 ignored
wchar_t w4 = L'\089';   // C4066 L'\0', 89 ignored
wchar_t w5 = L'\qrs';   // C4129, C4066 L'q' escape, rs ignored
wchar_t w6 = L'\x0050'; // L'P'
wchar_t w7 = L'\x0pqr'; // C4066 L'\0', pqr ignored

대리 페어

범용 문자 이름은 대리 코드 포인트 범위 D8000-DFFF에서 값을 인코드 하지 않습니다. 유니코드 대리 쌍에서 특히 \UNNNNNNNN을 사용한 범용문자이름에서 NNNNNNNN은 문자에 대한 8진수 코드 입니다. 컴파일러는 필요하다면 대리 페어를 생성합니다.

 

C++ 03에서 일부 문자에만 범용문자이름을 나타나 내느 것을 허용 했고 일부 범용문자이름은 실제로 일부 적합한 유니코드 문자들을 표현하는 것이 불가능합니다. 이런 실수는 c++11 기준에 수정되었습니다. C++11에서는 문자 그리고 문자열 리터럴 그리고 식별자까지 모두 범용 문자 이름을 사용할 수 있습니다. 범용문자이름에 대한 더 많은 정보는 CharacterSets을 참고하세요. 유니코드에 대한 정보는 Unicode를 보세요. 대리쌍에 대한 더많은 정보는 Surrogate Pairs and Supplementary Characters를 보세요.

 

 

728x90
728x90

As I told you before~

전에 얘기 했지만

728x90

'English' 카테고리의 다른 글

영어 메일 첫인사 및 서두인사 호칭  (0) 2022.03.10
관계 대명사 that을 쓰는 경우  (0) 2021.10.17
728x90

https://docs.microsoft.com/en-us/cpp/cpp/numeric-boolean-and-pointer-literals-cpp?view=msvc-160 

 

Numeric, boolean, and pointer literals (C++)

The C++ standard language formats for integer, floating-point, boolean, and pointer literals.

docs.microsoft.com

 

리터럴은 값을 직접 표현하는 프로그램 요소입니다. 이 기사는 interger 타입, 부동소수점, 불리언, 포인터의 리터럴들을 설명합니다. 문자열과 캐릭터 리터럴들에 대한 정보는 여길 String and Character Literals(C++)을 확인하세요. 당신은 또한 이러한 카테고리중에 기초하여 자신의 리터럴을 정의할 수도 있습니다. 더 많은 정보는 User-defined Literals(C++)을 참고하세요.

const int answer = 42;      // integer literal
double d = sin(108.87);     // floating point literal passed to sin function
bool b = true;              // boolean literal
MyClass* mc = nullptr;      // pointer literal

 

때로 컴파일러에게 리터럴을 해석하거나 리터럴에 부여할 특정 유형을 알려주는 것은 중요합니다. 이것은 리터럴의 접두사나 접미사를 붙이면 됩니다. 예를 들어 접두사 0x 는 컴파일레에게 숫자를 16진수 값으로 해석하도록 합니다. (ex  example 0x35).  ULL 접미사는 컴파일레에게 5894345ULL 처럼 unsignedLongLong 값으로 처리하도록 합니다. 각 리터럴 타입의 데한 접두사와 접미사 목록을 알고 싶으면 다음 섹션을 보세요.

 

Interger Literals

정수형 리터럴은 숫자로 시작되고 분수나 지수 부분이 없습니다. 당신은 정수형 숫자를 십진수, 이진수, 16진수 형태로 지정할 수 있습니다. 당신은 선택적으로 정수형 리터럴을 unsigned 형태로 지정할 수 있고 접미사를 사용하여 long이나 longlong과 같은 타입으로 지정할 수도 있습니다.

 

접두사, 접미사가 없는 현제 컴파일러는 정수형 리터럴 타입을 int로 지정합니다. 그 값이 맞다면, 그렇지 않으면 long long 타입으로 지정합니다.

 

십진수 정수형 리터럴로 지정하기 위해서 nonzero digit을 지정하는 것을 시작해라. 예시.

int i = 157;        // Decimal literal
int j = 0198;       // Not a decimal number; erroneous octal literal
int k = 0365;       // Leading zero specifies octal literal, not decimal
int m = 36'000'000  // digit separators make large values more readable

 

8진수 integral 리터럴로 지정은 0으로 시작하고 그뒤에 0에서 7사이의 숫자가 놓인다. 8과 9는 8진수 리터럴을 지정할 때 에러이다. 아래 예시

int i = 0377;   // Octal literal
int j = 0397;   // Error: 9 is not an octal digit

16진수 정수 리터럴을 지정하기 위해서는 0x 나 0X로 시작하고(x의 대/소는 상관없음) 뒤에 0에서 9 그리고 a/A에서 f/F 범위 내에서 숫자가 온다. 16진수 a/A ~ f/F는 10~15값을 표현한다. 아래 예시

int i = 0x3fff;   // Hexadecimal literal
int j = 0X3FFF;   // Equal to i

숫자 구분자 : 당신은 따옴표 문자를 이용하여 사람이 읽기 편하게 커다란 숫자의 공간을 구분할 수 있습니다. 구분자는 컴파일에 아무런 영향을 주지 않습니다.

long long i = 24'847'458'121

 

부동 소수점 리터럴

부동소수점 리터럴은 분수부분을 같는 값을 지정합니다. 이러한 값들은 소수점(.)을 포함하고 지수를 포함합니다.

 

부동소수점 리터럴은 숫자의 값을 지정하는 가수를 갖는다. 또한 숫자의 크기를 나타내는 지수부를 갖습니다. 그리고 그들은 선택적인 중위표현식을 갖습니다. 그것은 리터럴 타입을 지정합니다. 가수부는 마침표 앞에오는 숫자들이 거나 숫자의 분을 나타내는 숫자들로 지정됩니다.  아래 예시

18.46
38.

지수는 아래 예제에서와 같이 10의 거듭제급으로 숫자의 크기를 지정합니다

18.46e0      // 18.46
18.46e1      // 184.6

지수는 e 또는 e를 사용하여 지정될 수 있고, 그것들은 같은 의미를 갖습니다. 그 다음에 옵션으로 +또는 -기호와 숫자 순서를 사용할 수 있습니다. 만약 지수가 존재하면 추적하는 소수점은 18E0과 같은 숫자에서 필요 없다.

 

부동소수점 리터럴은 double 타입을 기본으로 한다. 접미사 f 또는 l 또는 F 또는 L를 (대소문자는 상관없다)  사용하여 리터럴은 float나 longdouble로 지정될 수 있다.

 

비록 longdouble과 double은 같은 표현을 하지만 그들은 같은 표현이 아니다. 예를 들어 당신은 이와 같이 오버로드 할수 있다.

void func( double );

그리고

void func( long double );

 

불리언 리터럴

불리언 리터럴은 true와 false이다.

 

포인터 리터럴(C++11)

C++ 0 초기화 포인터를 지정하는 nullptr을 소개합니다. 유연한 코드에서는 nullptr가 정수형 0이나 매크로 NULL 대신에 사용 되어야합니다.

 

이진 리터럴(C++14)

이진 리터럴은 0b 나 0B를 사용하여 지정됩니다. 그 다음에 1과 0의 숫자 순서가 업니다.

auto x = 0B001101 ; // int
auto y = 0b000001 ; // int

 

매직 상수로서의 리터럴을 피하라

당신은 직접적으로 표현식이나 구문을 사용할 수 있다. 비록 그게 항상 좋은 프로그래밍 방식이 아니라고 해도.

if (num < 100)
    return "Success";

앞에 예시에서 더 나은 방식은 이름이 있는 상수(명확한 의미를 전달하는)를 사용하는 것이다. 예를 들어 "MAXIMUM_ERROR_THRESHOLD"와 같은. 만약 마지막 사용자가 "Success"라는 리턴 값을 본다면 명명된 문자열 상수를 쓰는게 더 좋을 수 있다. 당신은 다른 언어로 번역가능한 파일의 단독 위치에 문자열 상수를 사용할 수 있다. 명명된 상수를 사용하는것은 당신과 다른 사람들에게 코드의 의도를 이해하는데 도움을 준다.

728x90
728x90
 

Punctuators (C++)

Learn more about: Punctuators (C++)

docs.microsoft.com

 

c++ 에서 구두점은 컴파일러에게 구문, 의미적으로 의미를 갖지만, 값을 산출하는 연산을 지정하지는 않습니다. 일부 혼자 쓰이거나 조합되어 쓰이는 구두점은 또한 c++ 연산자로 쓰이거나, 전처리기로 중요한 역할을 합니다.

 

다음 문자들은 구두점들이다.

! % ^ & * ( ) - + = { } | ~
[ ] \ ; ' : " < > ? , . / #

구두점 [],() 그리고 {}은 반디스 translation phase 뒤에 쌍으로 나타나야 합니다.

 

728x90
728x90

https://www.fluentu.com/blog/english-kor/%EC%98%81%EC%96%B4-%EC%B6%94%EC%9E%84%EC%83%88/

 

영어 추임새: 생소하지만 알아두면 아주 유용한 Filler words 15개

“well”, “um”, "like"과 같은 영어 추임새(filler words)는 문장에 실질적인 의미를 부여하지는 않지만 문장의 톤을 바꾸는 역할을 하는데요, 미국에서 가장 자주 쓰이는 영어 추임새 15가지를 한번

www.fluentu.com

미국식 영어에서 꼭 알아야 할 15가지 영어 추임새(filler words)

1. Well

“Well”은 여러 가지 용도로 쓰입니다. 먼저, 당신이 지금 생각하는 중이라는 것을 보여줄 때 사용할 수 있습니다.

Well, I guess $20 is a good price for a pair of jeans.”

말을 하는 중간에 잠시 쉬어갈 때도 쓸 수 있습니다.

“The apples and cinnamon go together like, well, apples and cinnamon.”

그리고 심지어 단순히 시간을 벌기 위해서도 쓸 수 있습니다.

Well… fine, you can borrow my car.”

2. Um/er/uh

“Um”, “er”, “uh”는 망설일 때 가장 많이 쓰이는 표현입니다. 정답을 잘 모를 때, 혹은 대답하고 싶지 않을 때 쓸 수 있죠.

Um, er, I uh thought the project was due tomorrow, not today.”

셋을 동시에 쓸 필요는 없으며 원할 때 아무거나 하나를 골라 사용해도 좋습니다.

Umm… I like the yellow dress better!”

3. Hmm

“Hmm”은 생각하는 중일 때 나오는 소리입니다. 당신이 고민 중이라거나 무언가를 결정하는 중이라는 걸 표현하죠.

Hmm, I like the pink bag but I think I’ll buy the black one instead.”

4. Like

“Like”는 정확한 정보가 아니라, “그 비슷한”, “그 언저리의”라는 뜻으로 쓰입니다.

“My neighbor has like ten dogs.”

위의 예문에서 이웃이 정확히 10마리의 개를 키우고 있는지는 확실하지 않습니다. 그냥 개의 마릿수가 많은 것이죠.

그리고 like는 말을 하는 도중 이다음에 쓸 말을 생각해내기 위해 시간을 조금 벌어야 할 때도 자주 사용됩니다.

“My friend was like, completely ready to like kick me out of the car if I didn’t stop using the word ‘like’.”

영어 추임새 용도의 “like”는 영어 원어민들 사이에서 일반적으로 부정적인 인식이 있습니다. 주로 나이 어린 여자들이 문맥과 상황을 고려하지 않고 남용하는 경향이 있고, 또 이렇게 like를 과하게 사용하다 보면 본인이 하는 말에 확신이 없다는 이미지를 줄 수 있기 때문입니다.

5. Actually/Basically/Seriously

“Actually”, “basically”, “seriously”는 모두 부사입니다. 동사를 꾸며주는 역할을 하죠. 많은 부사 단어 끝에는 “-ly”가 있기 때문에 알아보기도 쉽습니다. 이 모든 단어들은 말 어감상의 변화를 줄 때 추임새로서 쓰일 수 있습니다.

예를 들어 “actually” 같은 경우, 남들은 아니라고 할 수도 있지만 당신이 진실이라고 생각하는 것을 가리킬 때 사용할 수 있습니다:

Actually, pugs are really cute!”

“Basically”와 “seriously”는 문장을 살짝 다른 방향으로 틀어 주는 역할을 합니다. “Basically”는 무언가를 요약할 때 쓰고, “seriously”는 지금 하는 말을 진심으로 하는 것임을 표현할 때 쓸 수 있습니다.

Basically, the last Batman movie was seriously exciting!”

추임새로 쓰이는 다른 부사로는 “totally”, “literally”, “clearly” 등이 있습니다.

  • “literally”는 “글자 그대로”라는 의미가 있지만 대부분의 경우 대화에서는 다른 의미로 쓰입니다. 아주 강한 감정을 표현할 때 쓰이죠. 예: you’re not just laughing you’re literally dying from laughter.
  • “Totally”는 “completely”와 동의어이고 무언가에 대해 강조할 때 쓰입니다.
  • “clearly”는 obviously와 동의어이고 무언가가 명백하게 진실일 때 사용되는 말입니다.

이 세 단어 역시 한꺼번에 사용할 필요는 없지만 아래 예문에서는 여러분의 이해를 돕기 위해 한 곳에 넣어봤습니다:

Clearly you totally didn’t see me, even though I was literally in front of your face.”

6. You see

“You see”는 청자가 모르고 있다고 생각하는 사실을 공유할 때 사용됩니다.

“I was going to try the app, but you see, I ran out of space on my phone.”

7. You know

“You know”는 청자가 이미 알고 있을 거라고 생각하는 어떤 사실을 말할 때 사용됩니다.

“We stayed at that hotel, you know, the one down the street from Times Square.”

청자가 당신이 하는 말을 이해했다고 느꼈을 경우 긴 설명 대신 이 한마디로 대신할 수 있습니다.

“When the elevator went down, I got that weird feeling in my ears, you know?

8. I mean

“I mean”은 무언가에 대한 당신의 생각과 의도를 명확히 하고 싶을 때 씁니다.

I mean, he’s a great guy, I’m just not sure if he’s a good doctor.”

또는 앞서 말을 잘못했을 경우 이를 정정할 때도 쓰입니다.

“The duck and the tiger were awesome but scary. I mean, the tiger was scary, not the duck.”

“The cave is two thousand—I mean—twenty thousand years old!”

9. You know what I mean?

“You know what I mean?”은 내가 하는 말을 청자가 잘 따라오고 있는지 확인차 물을 때 쓰는 말입니다.

“I really like that girl, you know what I mean?

10. At the end of the day

“At the end of the day”는 “in the end” 또는 “in conclusion”의 동의어입니다.

At the end of the day, we’re all just humans, and we all make mistakes.”

11. Believe me

“Believe me”는 자기가 하는 말을 믿으라는 의미에서 하는 말입니다.

Believe me, I didn’t want this tiny house, but it was the only one I could afford.”

곧 할 말을 강조할 때 사용하기도 합니다.

Believe me, this is the cheapest, tiniest house ever!”

12. I guess/I suppose

“I guess”와 “I suppose”는 당신이 무언가를 말하기 망설이고 있거나 확인이 잘 안 설 때 붙이는 말입니다.

“I was going to eat dinner at home, but I guess I can go eat at a restaurant instead.”

“I guess”는 구어체로 많이 쓰이지만 “I suppose”는 조금 더 예스러운 표현처럼 들릴 수도 있습니다 (조금 더 배운 사람 같은 표현이랄까요).

13. Or something

“Or something”은 문장 맨 끝에 붙이며, 정확한 정보를 모를 때 쓸 수 있습니다.

“The cake uses two sticks of butter and ten eggs, or something like that.”

14. Okay/so

“Okay”와 “so”는 주로 말 첫머리에 쓰며 새로운 주제로 넘어간다는 표시로 쓰입니다.

So what are you doing next weekend?”

여태까지의 일을 요약할 때 말 첫머리에 쓰기도 하죠.

Okay, so we’re going to need to buy supplies for our trip this weekend.”

15. Right/mhm/uh huh

“Right”, “mhm”, “uh huh”는 긍정을 뜻하는 대답처럼 쓰입니다. 한마디로, “yes”를 의미하죠.

Right, so let’s prepare a list of all the things we’ll need.”

Uh huh, that’s exactly what he told me too.”

좋아요. 여기까지 배우셨으니 이제 여러분은 영어 추임새의 전문가가 다 되셨을 겁니다! 오늘 배운 단어들은 영어 추임새인 만큼, 특히 의미가 오묘하고 문맥에 따라 달라지는 경우가 많아 정확한 용법으로 쓰기 어려울 수 있습니다. 하지만 영어 추임새의 용법을 제대로 마스터하면 머지않아 영어 원어민이 말하는 것 유창한 영어를 구사할 수 있게 될 것입니다.

728x90

'English > OPIC' 카테고리의 다른 글

오픽노잼 정리  (0) 2021.09.09
오픽 위기 탈출  (0) 2021.09.08
OPIC_해커스인강_09_해변가기  (0) 2021.08.16
OPIC 학습 계획  (0) 2021.08.15
OPIC_해커스인강_07_공연,콘서트 관람  (0) 2021.08.15
728x90
 

Keywords (C++)

Lists the C++ standard language keywords, Microsoft-specific keywords, and context-specific keywords.

docs.microsoft.com

 

이미 정의된 키워드는 특별한 의미를 같은 식별자로도 예약되어 있습니다. 그것들은 당신 프로그램에서 식별자들로 사용 될수 없습니다. 아래 마이크로소프트c++에서 예약된 키워드들이 있습니다. c++/cx and c++/cli에 지정된 이름과 언더스코어로 시작하는 이름들은 마이크로소프트 확장입니다.

Standard C++ keywords

alignas
alignof
and b
and_eq b
asm a
auto
bitand b
bitor b
bool
break
case
catch
char
char8_t c
char16_t
char32_t
class
compl b
concept c
const
const_cast
consteval c
constexpr

constinit c
continue
co_await c
co_return c
co_yield c
decltype
default
delete
do
double
dynamic_cast
else
enum
explicit
export c
extern
false
float
for
friend
goto
if
inline

int
long
mutable
namespace
new
noexcept
not b
not_eq b
nullptr
operator
or b
or_eq b
private
protected
public
register reinterpret_cast
requires c
return
short
signed
sizeof
static
static_assert

static_cast
struct
switch
template
this
thread_local
throw
true
try
typedef
typeid
typename
union
unsigned
using declaration
using directive
virtual
void
volatile
wchar_t
while
xor b
xor_eq b

 

a 마이크로소프트가 지정한 _asm 키워드는 c++ asm 구문으로 대체 됐습니다. asm 은 다른 c++ 구현과의 호환성을 위해 예약되어 있습니다. 그러나 구현되지 않았습니다. x86 타겟에서 인라인 어셈블리를 위해서 _asm을 사용하세요. 마이크로 소프트는 다른 타겟에서는 인라인 어셈블리를 지원하지 않습니다.

 

b 확장 연산자 동의어는 permissive 또는 /Za (Disable Language extenstions)가 지정 되었을 때 키워드 입니다. 그들은 마이크로소프트 확장이 가능 했을 때는 키워드가 아닙니다.

 

c /std:c++ 20 그 이상에 지정된 경우 지원합니다.

 

Microsoft-specific C++ keywords

C++에서 두개의 연속된 언더스코워를 포함하는 식별자는 컴파일러 구현을 위해 예약된 것입니다. 마이크로소프트 규칙은 마이크로소프트 키워드 앞에 더블 언더스코어를 두는 것 입니다. 이러한 단어는 식별자 이름으로 사용될 수 없다.

 

마이크로소프트 확장은 기본적으로 사용가능하다. 당신 프로그램이 완전히 호환적이게 하기 위해서는 당신은 컴파일 되는 동안 /eprmisiive or /Za(Diable language extension)의해 지정된 마이크로 소프트 확장기능을 비활성화 해야합니다. 이러한 옵션은 일부 마이크로소프트 관련 키워드를 비활성화 시킬 수 있다.

 

마이크로소프트 확장기능이 사용가능 할 때, 당신은 당신 프로그램에서 마이크로소프트 관련 키워드를 쓸수 있다. ANSI 준수하기 위해 이러한 키워드 앞에 더블언더스코어가 표시됩니다. 이전 버전과의 호환성을위해 많은 더블언더스코어 키워드의 싱글언더스코어 버전들은 지원됩니다. __cdel 키워드는 선행 언더스코어가 없이 사용 가능합니다.

__asm 키워드는 c++ asm 키워드로 대체 됩니다. asm은 다른 c++ 구현과의 호환성을 위해 예약되어 있습니다. 그러나 구현되어 있지 않습니다. __asm을 사용하세요.

 

__based 키워드는 32 64 bit 타겟 컴파일 유저만 사용 가능합니다.

 

__alignof e
__asm e
__assume e
__based e
__cdecl e
__declspec e
__event
__except e
__fastcall e
__finally e
__forceinline e

__hook d
__if_exists
__if_not_exists
__inline e
__int16 e
__int32 e
__int64 e
__int8 e
__interface
__leave e
__m128

__m128d
__m128i
__m64
__multiple_inheritance e
__ptr32 e
__ptr64e
__raise
__restrict e
__single_inheritancee
__sptre
__stdcall e

__super
__thiscall
__unaligned e
__unhook d
__uptr e
__uuidof e
__vectorcall e
__virtual_inheritance e
__w64 e
__wchar_t

 

d 이벤트 처리에 사용되는 고유 함수

e 이전 버전과의 하위 호환성을 위해 이러한 키워드는 마이크로소프트 확장기능을 사용할수 있으면(기본으로 사용가능함), 더블언더스코어와 싱글언더스코어 두가지 사용 가능합니다.

 

__declspec modifiers에 마이크로 소프트 키워드

이 식별자들은 __declspec 수정자를 위한 확장된 속성들입니다. 그런 맥락으로 키워드로 취급됩니다.

 

C++/CLI and C++/CX keywords

__abstract f
__box f
__delegate f
__gc f
__identifier
__nogc f
__noop
__pin f
__property f
__sealed f

__try_cast f
__value f
abstract g
array g
as_friend
delegate g
enum class
enum struct
event g

finally
for each in
gcnew g
generic g
initonly
interface class g
interface struct g
interior_ptr g
literal g

new g
property g
ref class
ref struct
safecast
sealed g
typeid
value class g
value struct g

 

f c++에 대해서 관리되는 확장 기능에만 적용 가능. 이 구문들은 현재 사용됮 ㅣ않는다. 더 많은 정보를 위해서는 Component Extions for runtime platforms를 확인하세요.

 

g C++/CLI에 저굥ㅇ 가능.

728x90
728x90

이글은 여우강사 최나영 유투브 채널 내용을 정리한 내용입니다.

 

 

Who's  this?

누구야?

 

I'm just calling to say hi

그냥 안부 전화 했어.

 

You are breaking up

전화가 자꾸 끊겨서 들려요.

 

You have the wrong number.

전화 잘못 거셨어요.

 

I'm sorry my phone died.

전화기 밧데리가 나가서 죄송해요.

 

Hey, hold on real quick?

저, 잠깐만 기다려 줄래요?

 

I have another call.

다른 전화가 오고 있어요.

 

Can we video chat?

화상전화 할 수 있어요?

 

Let's video chat

화상전화 하자.

 

I'll call you right back.

바로 다시 전화할게요.

 

 

728x90

'English > Conversation' 카테고리의 다른 글

여우강사_원밥쓰_5일_연애  (0) 2021.09.20
여우강사_원밥쓰_6일_패션&뷰티  (0) 2021.09.20
해커스톡_밀착영어  (0) 2021.09.20
여우강사_원밥쓰_2일_공부  (0) 2021.08.18
여우강사_원밥쓰_1일_일  (0) 2021.08.18
728x90
 

Identifiers (C++)

Learn more about: Identifiers (C++)

docs.microsoft.com

식별자는 다음을 나타내는데 사용되는 문자열 시퀀스다.

- 객체나 변수 이름

- 클래스, 구조체 또는 유니온 이름

- 열거타입 이름

- 클래스, 구조체, 유니온 또는 열거 맴버

- 함수나 클래스 멤버 함수

- typedef 이름

- 라벨 이름

- 매크로 이름

- 매크로 파라메터

 

다음 문자는 식별자의 모든 문자로 사용된다.

_ a b c d e f g h i j k l m
n o p q r s t u v w x y z
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z

범용문자이름의 특정범위 또한 식별자로 사용된다. 식별자에서의 범용문자이름은 기본 문자셋에서 문자나 제어 문자로 ㅅ지정될 수 없다. 더 많은 정보는 여길 봐라. Character Sets. 이런 유니코드 숫자 범위는 식별자에 모든 문자로 범용 캐릭터 문자 이름이 사용될 수 있다.

  • 00A8, 00AA, 00AD, 00AF, 00B2-00B5, 00B7-00BA, 00BC-00BE, 00C0-00D6, 00D8-00F6, 00F8-00FF, 0100-02FF, 0370-167F, 1681-180D, 180F-1DBF, 1E00-1FFF, 200B-200D, 202A-202E, 203F-2040, 2054, 2060-206F, 2070-20CF, 2100-218F, 2460-24FF, 2776-2793, 2C00-2DFF, 2E80-2FFF, 3004-3007, 3021-302F, 3031-303F, 3040-D7FF, F900-FD3D, FD40-FDCF, FDF0-FE1F, FE30-FE44, FE47-FFFD, 10000-1FFFD, 20000-2FFFD, 30000-3FFFD, 40000-4FFFD, 50000-5FFFD, 60000-6FFFD, 70000-7FFFD, 80000-8FFFD, 90000-9FFFD, A0000-AFFFD, B0000-BFFFD, C0000-CFFFD, D0000-DFFFD, E0000-EFFFD

다음 문자는 처음을 제외하고는 식별자에서 모든 문자로 사용된다.

0 1 2 3 4 5 6 7 8 9

이러한 유니코드 포인트 넘버 범위는 또한 첫번째를 제외하고 식별자의 모든 문자에 대해서 범용문자이름이 사용됩니다. 

 

마이크로소프트 관련

마이크로소프트C++의 오직 처음 2048문자 식별자만 중요합니다. 사용자에 의해 재정의된 타입 이름은 타입 정보를 보존하기 위해 컴파일러에 의해 재구성됩니다. 타입 정보를 포함하는 최종적인 이름은 2048문자보다 길지 않습니다. (더 많은 정보를 위해서 Decorated Names를 봐라) 재구성된 식별자 길이에 영향을 미치는 요소 들은 :

 

- 그 식별자가 사용자 정의된 객체나 사용자 정의 타입에서 파생된 타입을 나타내는지 아닌지

- 그 식별자가 함수나 함수로 부터 파생된 타입을 나태는지 아닌지

- 함수 인자의 숫자

 

달러 표시인 $는 마이크로 소프트 c++ 컴파일러(msvc)에서 타장한 식별자 문자이다. msvc는 당신이 식별자에 허용된 범용 문자 이름으로 표현되는 실제 문자들을 사용하는 것 또한 허용합니다. 이러한 문자들을 사용하기 위해서는 당신은 그들으 포함하는 인코딩 코드페이지 파일을 저장해야 합니다. 이 예제는 어떻게 확장 문자와 범용 문자 이름이 당신 코드에서 교대로 사용되는 보여 줍니다.

 

// extended_identifier.cpp
// In Visual Studio, use File, Advanced Save Options to set
// the file encoding to Unicode codepage 1200
struct テスト         // Japanese 'test'
{
    void トスト() {}  // Japanese 'toast'
};

int main() {
    テスト \u30D1\u30F3;  // Japanese パン 'bread' in UCN form
    パン.トスト();        // compiler recognizes UCN or literal form
}

식별자에 사용되는 문자들 범위는 c++/cli 코드를 컴파일 할때 덜 엄격합니다. 코드에서 식별자는 Standard ECMA-355:Common Langue Infrastructure(CLI)를 따르는 /clr을 사용하여 컴파일 됩니다.

 

END 마이크로소프트 관련

식별자의 첫번째 문자는 반드시  대문자든, 소문자든 알파벳 문자거나 _언더스코어여야 한다. C++ 식별자는 예민하기 때문에, fileName 과 FileName은 다르다.

 

식별자는 정확하게 같은 키워드와 철자와 대소문자를 정확히 일치시킬 수 없다. 키워드를 포함하는 식별자는 괜찮다. 예를 들어 Pint 는 가능한 식별자다 키워드인 int를 포함하고 있더라도.

 

식별자에 언더스코어를 연속으로 두개 사용하거나 대문자 뒤에 선행 언더스코어를 단독으로 사용해라 이것은 모든 범위에서 c++ 구현이 예약된다. 당신은 파일 범위 내의 소문자 문자 앞에 선형 언더스코어를 사용하는 것을 피해야 합니다. 미래의 예약된 식별자 또는 현재의 것들과 충돌 가능성이 있기 때문입니다.

 

 

728x90

+ Recent posts