Chúng ta biết rằng đó sizeof
là một toán tử được sử dụng để tính toán kích thước của bất kỳ kiểu dữ liệu và biểu thức nào, và khi toán hạng là một biểu thức, dấu ngoặc đơn có thể được bỏ qua.
int main()
{
int a;
sizeof int;
sizeof( int );
sizeof a;
sizeof( a );
return 0;
}
cách sử dụng đầu tiên sizeof
là sai, trong khi những cách sử dụng khác đúng.
Khi nó được biên dịch bằng gcc, thông báo lỗi sau sẽ được đưa ra:
main.c:5:9: error: expected expression before ‘int’
Câu hỏi của tôi là tại sao tiêu chuẩn C không cho phép loại hoạt động này. Sẽ sizeof int
gây ra bất kỳ sự mơ hồ?
sizeof +(int)a
đã lợi thế hơn *&
của thực sự biên soạn ;-)
+
. Ví dụ: sizeof +(char)a == sizeof(int)
do quảng cáo số nguyên, có lẽ ít bị lỗi hơn chỉ cần đặt trong dấu ngoặc đơn nếu có bất kỳ lo lắng nào về biểu thức bạn đang cố lấy kích thước. Vì vậy, tôi không chắc là tôi muốn đi xa như vậy để gọi nó là "một sử dụng", mặc dù tôi thừa nhận tôi đã sử dụng nó ...
sizeof (int)a
.