2012-04-15 46 views
7

Tôi có C++ mã trong một trong những cuốn sách lập trình của tôi:Đường ống thẳng đứng (|) có nghĩa là gì trong C++?

WNDCLASSEX wndClass = { 0 }; 
wndClass.cbSize = sizeof(WNDCLASSEX); 
wndClass.style = CS_HREDRAW | CS_VREDRAW; 

nào ống đơn làm gì trong C++ cửa sổ lập trình?

+4

Điều này không liên quan gì đến lập trình cửa sổ; đây là một toán tử cơ bản của C++. –

+0

Rất tuyệt. Tôi đã gặp nó trong bối cảnh lập trình windows khi định nghĩa WNDCLASSEX. Tôi đã chỉnh sửa câu hỏi của mình để bao gồm các dòng đó. – quakkels

+1

Trên thực tế nó là một nhà điều hành của C, C++ thông qua nó – EdChum

Trả lời

21

Toán tử bitwise HOẶC. Nó sẽ thiết lập tất cả các bit đúng là đúng trong cả hai giá trị được cung cấp.

Ví dụ CS_HREDRAW có thể là 1 và CS_VREDRAW có thể là 2. Sau đó, nó rất đơn giản để kiểm tra xem họ được thiết lập bằng cách sử dụng các phép toán AND hành &:

#define CS_HREDRAW 1 
#define CS_VREDRAW 2 
#define CS_ANOTHERSTYLE 4 

unsigned int style = CS_HREDRAW | CS_VREDRAW; 
if(style & CS_HREDRAW){ 
    /* CS_HREDRAW set */ 
} 

if(style & CS_VREDRAW){ 
    /* CS_VREDRAW set */ 
} 

if(style & CS_ANOTHERSTYLE){ 
    /* CS_ANOTHERSTYLE set */ 
} 

Xem thêm:

+0

whaa ..? tất cả các bit thành sự thật? vì vậy hãy để tôi suy nghĩ. 010101 | 101010 sẽ trả về 111111? – quakkels

+0

Tôi vẫn đang tìm hiểu về các công cụ định hướng bit ngoài boolean. – quakkels

+2

Có. 'b00010101 | b00101010' sẽ trả về 'b00111111'. – Zeta

4

Đó là một toán tử OR bitwise. Ví dụ:

if(1 | 2 == 3) { 
    std::cout << "Woohoo!" << std::endl; 
} 

sẽ in Woohoo!.

Các vấn đề liên quan