01/10/2018, 00:50
Hỏi về lệnh do while goto ạ
#include <stdio.h>
int main ()
{
/* phan dinh nghia bien cuc bo */
int a = 5;
/* vong lap do...while */
VIETJACK:
do {
if( a == 10)
{
/* nhay qua buoc lap nay */
printf("Nhay qua buoc lap nay!
");
a = a + 1;
goto VIETJACK;
}
printf("Gia tri cua a la: %d
", a);
a++;
}while( a < 15 );
printf("
===========================
");
printf("VietJack chuc cac ban hoc tot!
");
return 0;
}
Em coi trên vietjack thấy code nó như vậy nhưng em bỏ thử cái a = a + 1 đi thì nó xuất cái printf của trong if liên tục trong khi đó mình đã có a++ rồi vậy a = a + 1 là sao nữa ạ
Bài liên quan
Code của em sẽ chạy như thế này.
Cứ tới chỗ goto thì nó sẽ nhảy lên cái label ở phía trên.
Khi em bỏ
a = a + 1
đi thì khi a bằng 10 nó sẽ giữ nguyên giá trị 10, dẫn đến nó sẽ lặp vô tận.Từ 1->9 điều kiện if sai nên nó bỏ qua vòng lặp vẫn bình thường
a=10 lệnh if được thưc hiện
a=a+1
thì a=11. nó in “Nhay qua bước lap nay” và bắt đầu lại vòng while11->14 vòng lặp được tiếp tục thực hiện bình thường.
Thank anh Đạt ạ vậy cái a++ ở dưới là sao vay anh
Là tăng a lên 1 đơn vị đó bạn. a++ sẽ tương đương với a = a + 1
K anh ơi nó còn cái a++; ngoài hàm if á
Thì là a = a + 1 đó.
a++
giống vớia = a + 1
nhé, chỉ khác về cách ghiK anh ơi
VIETJACK:
do {
if( a == 10)
{
/* nhay qua buoc lap nay */
printf(“Nhay qua buoc lap nay!\n”);
a = a + 1;
goto VIETJACK;
}
printf(“Gia tri cua a la: %d\n”, a);
a++;
Cái a++; đó anh sao phải thêm sau printf cuối cùng nữa vậy ở trên nó đã có rồi
mình THÍCH thì mình làm thôi ~~
Đùa đấy.
Ở đây, sau khi thực hiện câu lênh
a = a + 1
thì nó sẽgoto
lại cái đoạn code đó, bắt đầu từ label VIETJACK, nên câu printf và a++ ở dưới sẽ không thực hiện.Ngược lại, nếu if không được thực hiện thì printf và a++ sẽ được thực hiện, nên phải có a++ để tăng a lên, không là lặp vô tận
Thank bác em hiểu rồi cơ mà hơi rối
Debug đi. Debug là 1 cách hiểu code đấy