我有这个代码:

int main()
{
    char buffer[10];
    if( buffer ) {
       return 1;
    }
    return 0;
}

Visual C++ 10 解释如下:buffer 衰减为指针,然后将指针与 null 进行比较。当它与/O2 编译时,检查被消除,代码变得等同于 return 1;

上面的代码有效吗? Visual C++ 是否正确编译(我的意思是衰减部分,而不是优化部分)?

最佳答案

是的,从数组类型到 bool 的转换是由标准转换明确定义的。引用 C++11, 4/1(突出显示相关转换):

关于c++ - 使用数组作为条件表达式在 C++ 中有效吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8575555/

10-10 15:06