Wow an Ada question!! I worked with Ada for several years quite a while ago. But not in the context of military contracts, which is what Ada was developed for, and is often required for. This is important, because when I talked about Ada with developers working on US DoD projects, they had to conform to usage guidelines which restricted what they could do with the language.
C vs Ada: Short summary: C is a high level assembly language, which barely pays attention to things like type checking. Ada is a high level language, which comes close to, being Object Oriented but does not support things like inheritance.
Ada is fanatical about type checking. For example: If you ask a C programmer what the logical OR of 0xC0 and 0x03 is then answer is 0xC3. If you ask an Ada programmer, the same question, the answer is that the logical OR operation is NOT defined for integers. It only defined for booleans.
Why the different answers: Because C is a high level assembly language the C programmer automatically thinks in terms of the underlying computer instructions, rather than the logical definition of the abstract data type "Boolean".
I have been working with C/C++, for a long time now, and I think I prefer it to Ada.