Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Welcome to Software Development on Codidact!

Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.

Comments on What might happen if I ignore warning?

Post

What might happen if I ignore warning?

+1
−2
#include <iostream>
using namespace std;

int linearSearch(int array[], int n, int key){
	for(int i=0;i<=n;i++){
		if(array[i]==key){
			return i;
		}
	}
}

int main() {
  int balance[] = {10,240,120,150,100};
  cout<<linearSearch(balance, sizeof(balance)/sizeof(balance[0]), 150);
  return 0;
} 

When executing the code I got an warning. Should I really care of warning? I got expected output. Although, I was thinking of warning. What might happen if I ignore warning?

test.cpp: In function ‘int linearSearch(int*, int, int)’:
test.cpp:10:1: warning: control reaches end of non-void function [-Wreturn-type]
   10 | }
      | ^

When I add return 0; at end of for loop I don't get the error anymore. The warning was saying that the linearSearch method (function) wasn't returning always. But, can warning crash my applications?

Replying to last edit of Alexei : My question was about any type of warning not only above one. Above one was just an example. Anyway, I got more accurate answer in the thread

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.
Why should this post be closed?

1 comment thread

Yes, it can crash, because this leads to undefined behaviour. Try to search for a number that's not i... (2 comments)
Yes, it can crash, because this leads to undefined behaviour. Try to search for a number that's not i...
hkotsubo‭ wrote about 3 years ago

Yes, it can crash, because this leads to undefined behaviour. Try to search for a number that's not in the array, what will it return? I've tested in a Ubuntu machine, with g++ (it returns 6) and clang++ (Illegal instruction error), but as all undefined behaviours, this can vary a lot. IMO, you should worry more about writing clear/semantic/correct code instead of "it works" code. Does it make sense to not return anything if an element is not found? Sometimes you "know" it won't reach the non-return point, but that's not your case - if the number is not in the array, it won't return anything (one common approach is to return an invalid index, such as -1, to indicate the "not found" situation - returning zero is wrong because it means that the element is in the first position). And the loop condition should be i < n, not <= :-)

hkotsubo‭ wrote about 3 years ago

Regarding warnings, they're usually meant to tell you "Hey, there's something strange here, you should take a look". You shouldn't ignore them, unless there's a very good reason - which is not the case of your code, IMO.