在回答这个问题的时候,据说是这样的
int是默认构造为0,就像用int()初始化它们一样.其他原始类型被类似地初始化(例如,double(),long(),bool()等).
就在我向我的同事解释这个时,我编写了以下代码,编译(gcc-4.3.4)并运行,并观察到意外行为.
#include <iostream>
int main() {
int i();
std::cout << i << std::endl; // output is 1
}
Run Code Online (Sandbox Code Playgroud)
为什么是输出1
,但0
?
Luc*_*ore 31
最烦人的解析在这里发挥作用.你实际上是在声明一个函数i
,而不是一个int
变量.它甚至不应该编译(除非你实际上在i
某处定义了一个函数...... 你呢?).
要对int进行值初始化,您需要:
int i = int();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12765 次 |
最近记录: |