01/10/2018, 09:34

For(int i=2;n>1;) không có i++ thì như thế nào?

for(int i=2;n>1;)

câu lệnh trên không có i++ thì như thế nào ạ

2D_team_free_online_Education viết 11:44 ngày 01/10/2018
#include<iostream>
using namespace std;
int main(){
	int n = 10;
	for(int i=2;n>=1;){
		n -=1;
		cout<<n;
	}
}

i sẽ mặc định tăng lên 1 cho đến khi điều kiện sai

ZEROCOOL viết 11:37 ngày 01/10/2018

Mình muốn hỏi là : for(int i=2;n>1;) nó khác với for(int i=2;n>1;i++) chổ nào?

Trần Hoàn viết 11:34 ngày 01/10/2018

Nó sẽ chạy đến khi n ≤ 1. Như vậy có các khả năng như sau xảy ra:

  1. n ≤ 1 trước khi vòng for: Không có lần nào khối lệnh lặp được thực hiện
  2. n > 1 và trong vòng for không có lệnh thay đổi n: Vòng lặp vô hạn
  3. n > 1 và trong vòng for có lệnh thay đổi n nhưng không thể khiến n ≤ 1: Vòng lặp vô hạn
  4. n > 1 và trong vòng for có lệnh thay đổi n có thể khiến n ≤ 1: Vòng lặp được thực hiện đến khi n ≤ 1

Hay nói cách khác. Khối lệnh trên có thể hiểu như sau:

{//đóng nó vào một khối lệnh để các biến được khai báo bên trong khối lệnh sẽ bị huỷ khi ra ngoài khối lệnh đó, tương tự như for (int i = 2) thì hết vòng for là không còn i
    int i = 2;
    while (n > 1)
    {
        ...//Những cái bạn sẽ viết trong vòng for kia
    }
}
2D_team_free_online_Education viết 11:38 ngày 01/10/2018

nó ko có i++ , ngra rút gọn đi cho nó bớt chữ ý mà

Trần Hoàn viết 11:49 ngày 01/10/2018

i sẽ mặc định tăng lên 1 cho đến khi điều kiện sai

2D_team_free_online_Education viết 11:43 ngày 01/10/2018

mình nghĩ là như thế , và mình test thì nó đúng như thế @@ , vì cái dk nó chả liên quan gì đến n , nên nó chạy hoài

Tynk Huynk viết 11:42 ngày 01/10/2018
for(int i = 2; n > 1; i++) {
     n--;
}

=

int i = 2;
while(n>1){
    n--;
    i++; // Lúc này i++ là câu lệnh cuối cùng trong scope while
}

Vậy suy ra

for(int i = 2; n > 1;) {
     n--;
}

=

int i = 2;
while(n>1){
    n--;
}

Đơn giản vi điều kiện phụ thuộc vào giá trị của n, ko phải i nên kết quả vẫn giống nhau

Bài liên quan
0