Possible Duplicate:
Why is it an error to use an empty set of brackets to call a constructor with no arguments?
In an answer to this question it's said that
ints are default-constructed as 0, as if you initialized them with int(). Other primitive types are initialized similarly (e.g., double(), long(), bool(), etc.).
Just while I was explaining this to a colleague of mine I made up the following code, compiled (gcc-4.3.4) and ran, and observed unexpected behavior.
#include <iostream>
int main() {
int i();
std::cout << i << std::endl; // output is 1
}
Why is the output 1
and not 0
?