Hỏi cách hoạt động của i++

#include <stdio.h>
#include <math.h>
int main (){
	int n;
	scanf("%d",&n);
	long long tong=0;
	for(int i=1;i<=n;){
		tong+=i*(i++);
	}
	printf ("%lld",tong);
	return 0;
}
#include <stdio.h>
#include <math.h>
int main (){
	int n;
	scanf("%d",&n);
	long long tong=0;
	for(int i=1;i<=n;){
		tong+=i*i*(i++);
	}
	printf ("%lld",tong);
	return 0;
}

tại sao cái trên tính tổng sai từ 1 bình đến n bình
mà cái dưới đúng từ 1 mũ 3 đến n mũ 3

i++ không sai,
for không sai
bạn sai.

Cách hoạt động của i++, là thực hiện phép tính trước mới tăng biến

int main (){
	int i = 1;
	printf ("i = %d\n", i++); // i = 1
	printf ("i = %d\n", i);   // i = 2
	printf ("i = %d\n", i++); // i = 2
}

Trong code của bạn đoạn trên là tong+=i*(i++); mới là x² còn đoạn dưới tong+=i*i*(i++); là x³.

1 Like

Cả hai đoạn đều sai vì dính Undefined Behavior :slight_smile:

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