비트 연산과 삽입식 프로그래밍

2921 단어
1. 다음 프로그램의 오류를 찾아내고 왜 잘못된 것인지를 설명한다.
//The function need set corresponding bit int 0
#define BIT_MASK(bit_pos) (0x01<
int Bit_Reset(unsigned int* val, unsigned char pos)
{
    if (pos >= sizeof(unsigned int) * 8)
    {
        return 0;
    }
    *val = (*val && ~BIT_MASK(pos));
    return 1;
}

//해석: 이 프로그램체에는 비트 연산 문제의 답안이 존재한다. *val = (*val & ~BIT_MASK(pos)); 정확한 프로그램은 다음과 같다.
#include
#include

//The function need set corresponding bit int 0
#define BIT_MASK(bit_pos) (0x01<
int Bit_Reset(unsigned int* val, unsigned char pos)
{
    if (pos >= sizeof(unsigned int) * 8)
    {
        return 0;
    }
    *val = (*val & ~BIT_MASK(pos));
    return 1;
}
int main()
{
    unsigned int x = 0xffffffff;
    unsigned char y = 4;
    Bit_Reset(&x, y);
    std::cout<<std::hex<'
'
; system("pause"); return 0; }

2. 다음 코드 중 어느 것이 int i = (int)p;(p char *p)A, int i = dynamic_cast(p)B, int i = static_cast(p)C, int i = const_cast(p)D, int i = reinterpret_cast(p)

좋은 웹페이지 즐겨찾기