Nó hoạt động. Tôi không nhận được cảnh báo từ gcc, vì vậy tôi cho rằng nó phù hợp với tiêu chuẩn.
Sự kỳ diệu là việc đóng cửa:
{ int n; scanf("%d", &n); n*n; }
nugget này quét một số nguyên từ bàn điều khiển (không có kiểm tra lỗi) và hình vuông nó, trả lại số bình phương. Trong triển khai cổ C, số cuối cùng trên ngăn xếp được trả về. n*n
đặt số trên ngăn xếp.
Đó giá trị được thông qua với printf:
printf("%d\n", <scanned>);
Vì vậy, để giải đáp thắc mắc của bạn: Vâng, nó hoạt động. Có, đó là "tiêu chuẩn" (đến mức mà bất kỳ ai tuân theo tiêu chuẩn hoàn toàn). Không, nó không phải là một thực hành tuyệt vời. Đây là một ví dụ điển hình về phản ứng đầu gối, gọi là "thư tình biên dịch", được thiết kế chủ yếu để cho thấy lập trình viên thông minh như thế nào, không nhất thiết phải giải quyết vấn đề hoặc hiệu quả.
C99 Nghiêm ngặt: http://ideone.com/9K9bcV và C http://ideone.com/PdalsH Trình biên dịch IDE C của tôi khai báo một loạt các lỗi và cảnh báo về vấn đề này. Quan tâm lý do tại sao liên kết thứ hai biên dịch. –
@Armin liên kết sử dụng gcc, theo mặc định, sử dụng GNU C89. – effeffe
Không trả lời cho câu hỏi của bạn Nhưng nó hoạt động với gcc ở đây tôi đã viết các mã tương tự [** Đầu tiên **] (http://codepad.org/POu848fV) và [** Thứ hai **] (http://codepad.org/MFLG9sa7), Nhớ trong [** 'int i = (5, 7);' 'i' sẽ là' 7' **] (http://stackoverflow.com/questions/15302789/c-explain-ifexit0- 0-line-of-code/15303040 # 15303040) –