Example with a context (Java: A Beginner's Guide, 6th Edition by Herbert Schildt):
I noticed that read( ) returns –1 when the end of the file has been reached, but that it does not have a special return value for a file error. Why not?
While it's perfectly clear what the sentence says, I find this particular sentence pattern a bit confusing and somewhat unnatural. I don't know why though. Perhaps it is because that this kind of grammatical structure is not commonly used. From my experience, I can definitely say that I don't see this one very often. Every time I read this sentence, the sentence, for some reason, sounds incomplete, like there's information missing from it and my brain tries to add that missing information back in after the second clause to conclude the thought, like this:
I noticed that read( ) returns –1 when the end of the file has been reached, but that it does not have a special return value for a file error is very strange since similar functions in other programming languages do. Why not?
What can you say about this problem? Could you maybe do a grammar analysis of the sentence for me?