我的 C++ 代码中有以下结构。
struct XYZ {
double x;
double y;
double z;
};
struct Data {
XYZ xyz_point;
double item_1;
double item_2;
double item_3;
};
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我创建了一个结构向量Data。
std::vector<Data> data_vector;
for (i = 0; i < 5; i++) {
Data data_point_1;
data_point_1.xyz_point.x = 10.0;
data_point_1.xyz_point.y = 11.0;
data_point_1.xyz_point.z = 12.0;
data_point_1.item_1 = 13.0;
data_point_1.item_2 = 14.0;
data_point_1.item_3 = 15.0;
data_vector.push_back(data_point_1);
}
Run Code Online (Sandbox Code Playgroud)
代码构建成功,没有任何错误,但是在 CPP_Check 期间,我收到以下警告/错误。data_point_1没有该字段x,y并且z。
[test.cc:122]: (error: uninitStructMember) Uninitialized struct member: data_point_1.x
[test.cc:122]: …Run Code Online (Sandbox Code Playgroud) 我有一个非常奇怪的问题,它源于我一直在编写的 C++11 程序的错误。
请参阅以下代码:
long long a[1000];
int main(int argc, char * argv[]) {
for(long long i = 0; i < 300; ++i) {
scanf("%lli", &a[i]);
std::cout << a[i] << std::endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
尝试输入1,2等我们得到的输出1\n,2\n等等类似的预期。这也适用于001我们从哪里得到1\n,0004我们从哪里得到这样的输入4\n。
但是,当前导零后面的数字是 8 或 9 时,scanf()首先读取前导零,然后读取后面的数字。
例如:
输入:0009,输出:000\n9\n。
输入:08,输出0\n8\n。
输入:00914,输出00\n914\n。
我已经做了一些测试,对于这些情况,似乎scanf()首先读取前导零,剩余的数字留在缓冲区中,这些数字在循环的第二次运行时被拾取。
有人可以暗示发生了什么吗?
我正在使用 …