(x---1)
== (x-- -1)
vì trình biên dịch thử để chọn thẻ lớn đầu tiên, Vì vậy ---
hiểu là --
& -
Biểu x-- - 1
nghĩa đầu tiên 1
trừ từ giá trị hiện tại của x
do -
trừ hoạt động. Sau đó, x
giá trị được giảm dần bởi 1 do toán tử giảm hậu tố --
.
Ví dụ, ở trước đầu tiên lặp x = 3
, như vậy trong khi điều kiện là 2
(có nghĩa là 3 - 1
) sau đó x
giảm đi, và trước khi phiên bản kế tiếp x = 2
.
x = 3
, i =0
;
- 1-lặp:
while(2)
, và trong vòng lặp i
trở thành 1
x = 2
, i = 1;
- 2-lặp:
while(1)
, và trong vòng lặp i
trở thành 2
x = 1
, i = 2;
- Bây giờ,
x - 1
= 0
cung cấp cho while(0)
và vòng lặp phá vỡ và i
không tăng.
Vì vậy, sau vòng đầu ra i
: 2
lưu ý thêm một điểm: i
không tăng như phá vỡ vòng lặp vì i++
trong khi khối {}
, nhưng x
giảm đi để 0
. Sau vòng lặp nếu bạn printf x
thì đầu ra sẽ là 0
.
Nguồn
2013-07-30 14:05:14
Tôi vẫn thích toán tử '->' tốt hơn: 'while (x -> 0) {...}' – nneonneo
@nneonneo Đề xuất "x chuyển thành số không" :) Các nhà toán học và tác giả đệ trình IOCCC phải yêu thích . –
Tôi đã sử dụng nó trong mã thử nghiệm đồ chơi bởi vì nó dễ dàng hơn rất nhiều so với nhập tương đương cho vòng lặp. Nhưng, những người bảo trì có lẽ sẽ giết tôi nếu tôi cố gắng nộp nó cho thật :) – nneonneo