Tại sao không dùng được 2 dấu bằng trong vòng lặp for?

Tại sao không dùng được 2 dấu bằng trong vòng lặp for(Vì nó tưởng nhầm là phép so sánh?). Nhưng tại sao khi cho 2 dấu bằng và bỏ break thì kết quả lại là 0. Code bên dưới ạ

#include<stdio.h>
// Tai sao trong vong lap for khong dung duoc 2 dau ==
/* Vi du: (cai nay la vi du sai) for(i==1; i<=b; i++)
Ket qua ra la  0;
Tai sao ket qua lai la 0
*/
int main()
{
	int i;
	int a, b, b1;
	printf("Nhap hai so a,b: ");
	scanf("%d%d", &a, &b);
	if(a%b==0)
		printf("Boi so chung nho nhat la: %d", a);
	else if(b%a==0)
		printf("Boi so chung nho nhat la: %d", b);
	else if(a==b)
		printf("Boi so chung nho nhat la: %d", a);
	else
	{
		for(i=1; i<=b; i++)
		{
			b1 = a*i;
			if(b1%b==0)
			{
				printf("Boi so chung nho nhat la: %d", b1);
				break;
			}
		}
	}
	return 0;
}

Trước tiên bạn hãy format lại code dùng markdown và đặt tiêu đề sao cho đúng với nội quy và toát hết được ý nha.


Về câu hỏi của bạn.

Tại sao không dùng được 2 dấu bằng trong vòng lặp for(Vì nó tưởng nhầm là phép so sánh?).

Nếu để 1 dấu bằng thì là phép gán, 2 dấu bằng thì nó là phép so sánh, 3 dấu bằng thì là compiler error. :v Không có hiểu nhầm gì hết nha. :slight_smile:

Nhưng tại sao khi cho 2 dấu bằng và bỏ break thì kết quả lại là 0. Code bên dưới ạ

Tùy vào compiler mà biến i sẽ được tự động gán bằng 0 hoặc sẽ có giá trị rác nếu như bạn không gán cho nó giá trị ban đầu khi khai báo.

Trong trường hợp của bạn nó sẽ bằng 0. Thế rồi b1 % b == 0 cho ra giá trị true thì nó sẽ in ra b1 với kết quả là 0 sau khi qua phép tính b1 = a * i (i bằng 0).

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?