【发布时间】:2018-10-11 05:59:21
【问题描述】:
从 C++ 标准的角度来看,以下代码是否正确?
或者在我的示例中输出0 的任何案例在某些情况下会失败吗?
struct Foo {
Foo() : k(), t{} {}
uint64_t i; //Uninitalized
uint64_t k;
uint64_t t;
};
int main(int argc, char ** argv) {
uint64_t i;
std::cout << i << std::endl; //Outputs garbage
uint64_t k = uint64_t();
std::cout << k << std::endl; //Outputs 0
uint64_t t = {};
std::cout << t << std::endl; //Outputs 0
//
Foo foo;
std::cout << foo.i << std::endl; //Outputs garbage
std::cout << foo.k << std::endl; //Outputs 0
std::cout << foo.t << std::endl; //Outputs 0
}
【问题讨论】:
标签: c++ c++11 language-lawyer