我知道,右移负签名类型取决于实现,但如果我执行左移,该怎么办?例如: int i = -1;
i << 1;
这是明确的吗? 我认为标准的不说,大约有符号整型负值 如果E1已经签署的类型和非负值,E1×2 E2是 可表示在结果类型那么这就是结果的价值; 否则,行为是不确定的。 它只是澄清,如果结果不能用signed型表示,那么行为是未定义的。
我别无选择,从那以后纠正,类似下面的代码: class SomeClass {
public:
static int AdjustValue(float input);
static int DoSomethingWithAdjustedValue(int adjustedInput);
static int DoSomethingWithNormalValue(f
以下是否会调用未定义的行为? int x;
int i = x;
从C++ 03 (4.1/1)如果到所述左值是指该对象不是类型T 的目的,而不是衍生自类型的对象参考T或如果对象是 未初始化,则需要此转换的程序有 未定义的行为。 编辑: 然而,从(3.3.1/1)的对象可以与它自己的indetermine值进行初始化,这是为什么?即 int x = x; //not an undefined