Giả sử tôi có hai biểu thức bên trái/bên phải của toán tử ||
. Tôi thấy nếu biểu thức trái là đúng, toán tử bên phải sẽ không bao giờ được gọi. Ví dụ: trong mã bên dưới của tôi, khi getRand
trả về true, tôi thấy Foo
sẽ không bao giờ được gọi. Tôi đã thử nghiệm trên XCode trên Mac OSX, và tự hỏi nếu nó là một tính năng đáng tin cậy của C++, chúng ta có thể dựa vào - nếu phần còn lại của || là đúng, phần bên phải sẽ không bao giờ được gọi, hoặc nó là một tính năng đặc biệt chỉ dành cho nền tảng cụ thể (ví dụ: OSX với XCode)? Đăng mã của tôi dưới đây, cảm ơn.nhầm lẫn bởi C++ toán tử OR (||) logic
bool Foo()
{
std::cout << "I am called!\n";
return false;
}
bool getRand()
{
int random_variable = std::rand();
std::cout << random_variable << '\n';
return random_variable % 2 == 1;
}
int main(int argc, const char * argv[]) {
if (getRand() || Foo())
{
std::cout<<"Hello World \n";
}
return 0;
}
cảm ơn trước, Lin
'tự hỏi nếu nó là một tính năng đáng tin cậy của C++, chúng tôi có thể dựa vào 'Có, đúng vậy. – Matt
&& cũng có đánh giá ngắn mạch, nếu đối số đầu tiên là sai – sp2danny
Đánh giá ngắn mạch là một tính năng đáng tin cậy _most của time_. Nó sẽ không hoạt động nếu kiểu được sử dụng có toán tử && overload. Các kiểu nguyên thủy như 'bool' là an toàn. – kolrabi