0
I am getting segmentation fault while running my cpp program?What can be the reason?
#include <iostream> bool leapyear(int year) { if(year%4==0) { return true; }else if(year%4!=0) { return false; } } int main() { int y = 2016; //std::cin >> year; if(leapyear(y)==true) { std::cout<<y+" is leap year" << std::endl; }else if(leapyear(y)==false) { std::cout <<y+" is not a leap year" << std::endl; } return 0; } why i am getting segfault ?i don't think i am overwriting any file i am not allowed to ?
2 Antworten
+ 7
I think the error is due to the statements 
cout<< y + "is leap year"; 
and cout<<y + "is not a leap year"; ,
as we cannot add strings and integers in C++ directly...
As a correction, try the following function - std::to_string(int); // C++11 only...
Or, convert 'y' to a string using stringstream using the following function : 
std::string to_str(int a)
{
stringstream ss;
ss<<a;
return ss.str();
}
Here is the code, corrected , using std::to_string.
#include <iostream>
#include <string> 
bool leapyear(int year) {
	if(year%4==0) {
		return true;
	}else if(year%4!=0) {
		return false;
	}
}
int main() 
{
	int y = 2016;
	//std::cin >> year;
	if(leapyear(y)==true) 
   {
		std::cout<<std::to_string(y)+" is leap year" << std::endl;
	}else if(leapyear(y)==false) {
		std::cout <<std::to_string(y) +" is not a leap year" << std::endl;
	}
	return 0;
}
+ 4
or
#include <iostream>
bool leapyear(int year) {
	if(year%4==0) {
		return true;
	}else if(year%4!=0) {
		return false;
	}
}
int main() {
	int y = 2016;
	//std::cin >> year;
	if(leapyear(y)==true) {
		std::cout<<y << " is leap year" << std::endl;
	}else if(leapyear(y)==false) {
		std::cout <<y << " is not a leap year" << std::endl;
	}
	return 0;
}
without conversion



