C++ lệnh if sao lại vậy ạ

mọi người xem hộ mình đoạn code này, tại sao khi không có( else return 0) thì kết quả là tổng từ 1 đến n, mà tại sao khi có else return 0 thì kết quả lại đúng ạ.

đề bài: tính tổng các số nguyên tố từ 1 đến n

bài làm:

#include<iostream>
 using namespace std;
 int kiemtraSoNguyenTo(int n)
{
int dem;
dem=0;
  for(int i=1;i<=n;i++)
   if(n%i==0) dem++;
   if(dem==2) return 1;
   else return 0; // đoạn này ạ
}
 int tongcacSoNguyenTo(int n)
 {int z=0;
 for(int i=1;i<=n;i++)
  if(kiemtraSoNguyenTo(i)==1) z+=i;
  return z;
 }
 int main()
 {int n; cout<<"moi nhap n"; cin>>n;
 tongcacSoNguyenTo(n);
 cout<<"tong la"<<tongcacSoNguyenTo(n);	
 }

VS sẽ cảnh báo “not all code paths return a value” :smiley: nếu ta ko return gì thì runtime sẽ lấy giá trị vô tình nằm ở đó để trả về, sau đó ép ra boolean thì là true.

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