为什么这个VC ++程序无法编译?

时间:2015-02-18 01:22:32

标签: visual-c++

这最近出现在一堂课上。问题是if中第一次出现“ptr”。错误是“表达式必须是可修改的值”。

#include "stdafx.h"
#include <iostream>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
    int * ptr = nullptr;
    int i = 7;
    if (ptr == nullptr && ptr = &i) 
        cout << *ptr;
    return 0;
}

1 个答案:

答案 0 :(得分:0)

圆括号是你的朋友。 C / C ++运算符优先级表很深,有些方面不直观。

在这种情况下,逻辑AND(&amp;&amp;)绑定比赋值(=)更紧密。 (“Binds tighter”==“具有更高的优先权”。)

如果有疑问,我总是使用快速谷歌搜索“c运算符优先级表”来获取一堆结果页面,所有结果页面都按优先顺序提供有用的表格。 (实际上,当我怀疑在我自己的代码中时,我总是首先添加括号。)