Xét đoạn mã sau:Tại sao mã thông báo được bao quanh bởi dấu ngoặc đơn chứ không phải biểu thức giá trị r?
#include <iostream>
struct Foo
{
Foo() : bar(0) {}
int bar;
};
int main()
{
Foo foo;
++(foo.bar);
std::cout<< foo.bar << std::endl;
system("pause");
return 0;
};
Tại sao foo.bar
đánh giá đến 1?
Không dấu ngoặc đơn trong (foo.bar)
tạo biểu thức chưa đặt tên (r-giá trị) sau đó được tăng lên?
Không, bạn có nhầm lẫn điều này với một số ngôn ngữ khác trong đó 'f (x)' và 'f ((x))' khác nhau không? –
@BoPersson Nhưng có một số ngữ cảnh mà nó tạo nên sự khác biệt. Ví dụ 'decltype (x)' và 'decltype ((x))' có thể khác nhau. – juanchopanza
@juanchopanza: damned ... đó là khó khăn! –