Информация об изменениях

Сообщение Re[21]: Как записать такое в современном C++? от 31.07.2024 19:53

Изменено 31.07.2024 19:58 kov_serg

Re[21]: Как записать такое в современном C++?
Здравствуйте, B0FEE664, Вы писали:

BFE>И вообще, попробуйте поспрашивать коллег, что выведет следующий код:

BFE>
BFE>#include <iostream>
BFE>enum AB
BFE> {
BFE>    a = 1,  
BFE>    b = 0xF0000000
BFE>};

BFE>enum CD
BFE> {
BFE>    cd_c = 1,  
BFE>    cd_d = 0xF00000000
BFE>};
 
 
BFE>int main()
BFE>{
BFE>  if ( sizeof(a) == sizeof(cd_c) )
BFE>     std::cout << "yes";
BFE>  else     
BFE>     std::cout << "no";
BFE>}    
BFE>

Да C++ он такой
enum E1 { e1_c1=1 };
enum E2 { e2_c1=1 };

void fn(enum E1 e) { std::cout<<"fn.E1\n"; }
void fn(enum E2 e) { std::cout<<"fn.E2\n"; }
void fn(char e) { std::cout<<"fn.char\n"; }
void fn(signed char e) { std::cout<<"fn.schar\n"; }
void fn(unsigned char e) { std::cout<<"fn.uchar\n"; }
void fn(short e) { std::cout<<"fn.short\n"; }
void fn(int e) { std::cout<<"fn.int\n"; }
void fn(unsigned e) { std::cout<<"fn.uint\n"; }
void fn(long long e) { std::cout<<"fn.llong\n"; }

void test() {
    fn(e1_c1);
    fn(e2_c1);
    fn('\x01');
    fn(+'\x01');
    fn(1);
    fn((char)1);
    fn((unsigned char)1);
    fn((signed char)1);
    fn((short)1);
    fn(1u);
    fn(1LL);
}

fn.E1
fn.E2
fn.char
fn.int
fn.int
fn.char
fn.uchar
fn.schar
fn.short
fn.uint
fn.llong

Ему мало значения константы, ему надо еще и мозг по выносить.
Re[21]: Как записать такое в современном C++?
Здравствуйте, B0FEE664, Вы писали:

BFE>И вообще, попробуйте поспрашивать коллег, что выведет следующий код:

BFE>
BFE>#include <iostream>
BFE>enum AB
BFE> {
BFE>    a = 1,  
BFE>    b = 0xF0000000
BFE>};

BFE>enum CD
BFE> {
BFE>    cd_c = 1,  
BFE>    cd_d = 0xF00000000
BFE>};
 
 
BFE>int main()
BFE>{
BFE>  if ( sizeof(a) == sizeof(cd_c) )
BFE>     std::cout << "yes";
BFE>  else     
BFE>     std::cout << "no";
BFE>}    
BFE>

Да C++ он такой
enum E1 { e1_c1=1 };
enum E2 { e2_c1=1 };

void fn(enum E1 e) { std::cout<<"fn.E1\n"; }
void fn(enum E2 e) { std::cout<<"fn.E2\n"; }
void fn(char e) { std::cout<<"fn.char\n"; }
void fn(signed char e) { std::cout<<"fn.schar\n"; }
void fn(unsigned char e) { std::cout<<"fn.uchar\n"; }
void fn(short e) { std::cout<<"fn.short\n"; }
void fn(int e) { std::cout<<"fn.int\n"; }
void fn(unsigned e) { std::cout<<"fn.uint\n"; }
void fn(long long e) { std::cout<<"fn.llong\n"; }

void test() {
    fn(e1_c1);
    fn(e2_c1);
    fn('\x01');
    fn(+'\x01');
    fn(1);
    fn((char)1);
    fn((unsigned char)1);
    fn((signed char)1);
    fn((short)1);
    fn(1u);
    fn(1LL);
    fn(+e1_c1);
    fn(+e2_c1);
}

fn.E1
fn.E2
fn.char
fn.int
fn.int
fn.char
fn.uchar
fn.schar
fn.short
fn.uint
fn.llong
fn.int
fn.int

Ему мало значения константы, ему надо еще и мозг по выносить.