2009-07-02 63 views

Trả lời

35
do 
{ 
    // whatever 
} while (!condition); 
+3

Uhh ... Đây là khá buồn. Emil hit gửi sớm hơn tôi đã làm ... "chấp nhận" nên đi đến anh ta ... – Adrien

+10

Bạn có ít đại diện, và đó là một câu hỏi cực kỳ đơn giản, vì vậy tôi sẽ sẵn sàng cung cấp cho nó cho bạn. :) –

+1

Như jalf nói, mặc dù: Nếu bạn muốn làm cho đến khi vòng lặp chứ không phải là một vòng lặp do while bạn sẽ phải phủ nhận điều kiện. –

9

Khi bạn muốn kiểm tra điều kiện ở phần đầu của vòng lặp, chỉ cần phủ nhận điều kiện trên while vòng tiêu chuẩn:

while(!cond) { ... } 

Nếu bạn cần nó ở cuối, sử dụng một do. .. while lặp lại và phủ nhận điều kiện:

do { ... } while(!cond); 
7

Bạn có thể sử dụng macro để mô phỏng cú pháp lặp lại cho đến khi.

#define repeat do 
#define until(exp) while(!(exp)) 
+0

Đây chính xác là những gì tôi đang tìm kiếm. Bạn không chắc chắn cách hoạt động của "exp". Nó là một ký tự đại diện chung? Cảm ơn bạn! –

+1

@ Ace.C Đó là một tên đối số. '# Define' thứ hai tạo ra một macro, hoạt động giống như một hàm. Vì vậy, trong trường hợp này, '#define cho đến (exp)' là một macro có tên 'until' lấy một tham số' exp' và mở rộng thành 'while (! (Exp))'. –

+0

Cảm ơn bạn @ Conor.O, Có lẽ và bài viết hoặc bài đăng khác về chủ đề này bạn có thể liên kết tôi đến? Tôi gặp khó khăn khi tìm tài nguyên tốt về cách tạo các loại macro này –

2

Ví dụ nếu bạn muốn có vòng lặp dừng khi tính tất cả mọi người trong một nhóm. Chúng tôi sẽ xem xét giá trị X bằng với số lượng người trong nhóm và bộ đếm sẽ được sử dụng để đếm tất cả những người trong nhóm. (! Condition) để viết

khi

mã sẽ là:

int x = nhân dân;

int counter = 0;

while (x = counter!)

{

truy cập ++;

}

return 0;

1

Chỉ cần sử dụng:

do 
{ 
    //enter code here 
} while (!condition); 

Vì vậy, điều này không là, nó di chuyển 'kiểm tra tình trạng' một phần của bạn đến cùng, kể từ khi while là lúc kết thúc. Vì vậy, nó chỉ kiểm tra điều kiện sau khi chạy mã, giống như cách bạn muốn nó

0

Lặp lại được cho là một vòng lặp n vòng lặp đơn giản ... một phiên bản vô điều kiện của một vòng lặp.

#define repeat(n) for (int i = 0; i < n; i++) 

repeat(10) { 
    //do stuff 
} 

bạn cũng có thể thêm một barce thêm để cô lập các biến i thậm chí nhiều hơn

#define repeat(n) { for (int i = 0; i < n; i++) 
#define endrepeat } 

repeat(10) { 
    //do stuff 
} endrepeat; 
Các vấn đề liên quan