default constructor for int
c++
Solution
Most vexing parse comes into play here. You're actually declaring a function `i`, not an `int` variable. It shouldn't even compile (unless you actually have a function `i` defined somewhere... do you?).
To value-initialize the int, you need:
int i = int();
Problem
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` ?