我定义了以下课程。
class STTreeNode
{
public:
int ind;
int parentInd;
std::vector<int> childInds;
int numTrain;
std::vector<bool> isInfluenced;
STTreeNode(int ind, int parentInd, int numTrain);
};
STTreeNode::STTreeNode(int ind, int parentInd, int numTrain) {
this->ind = ind;
this->parentInd = parentInd;
this->numTrain = numTrain;
}
Run Code Online (Sandbox Code Playgroud)
我运行了以下代码段。
STTreeNode *a = new STTreeNode(3, 4, 5);
a->childInds.push_back(20);
a->childInds.push_back(30);
a->isInfluenced.push_back(true);
a->isInfluenced.push_back(false);
for (int i = 0; i < a->childInds.size(); i++)
std::cout << &(a->childInds[i]) << " ";
std::cout << std::endl;
for (int i = 0; i < a->isInfluenced.size(); i++)
std::cout << …Run Code Online (Sandbox Code Playgroud) 假设我们有三个整数(int,long,long long,unsigned int等)a, b, c。通常情况下,
c = a / b;
Run Code Online (Sandbox Code Playgroud)
会导致分数截断。但是,c最终可能会得出不正确的值吗?
我不是在说a / b可能超出范围,c's type.而是在C中如何实现整数除法。执行a / b首先生成浮点型中间结果,然后中间值被截断吗?
如果是这样,我想知道中间值精度的损失是否会导致c的值不正确。例如,假设a / b的精确值为2,但中间结果为1.9999...,则c最终将得出不正确的值1。这种情况会发生吗?期望值在c的类型范围内?