12.1 p14中未指定值一词的确切含义是什么:


struct C;
void no_opt(C*);

struct C {
    int c;
    C() : c(0) { no_opt(this); }
};

const C cobj;

void no_opt(C* cptr) {
    int i = cobj.c * 100; // value of cobj.c is unspecified
    cptr->c = 1;
    cout << cobj.c * 100 // value of cobj.c is unspecified
         << ’\n’;
}



我可以在1.3.25中找到未指定行为的定义:


  • 我在VS2010中运行了此代码段,对于上面的两个表达式cobj.c,我得到了正确的结果:第一个为0,最后一个为1。这里未指定什么?
  • 未指定行为的定义是否适用于未指定值,即是否意味着在另一个编译器中我可以得到不同的结果?
  • 最佳答案

    您的解释是正确的。该行为未由标准指定。使用此编译器可以获得预期的结果,但是另一个编译器可能会给出不同的结果。如果要将代码移植到另一个编译器,或者可能是正在使用的另一个版本的编译器,则不应依赖此行为。

    关于c++ - 标准在12.1 p14中的 “unspecified value”是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20829244/

    10-11 22:40