这最近出现在一堂课上。问题是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;
}
答案 0 :(得分:0)
圆括号是你的朋友。 C / C ++运算符优先级表很深,有些方面不直观。
在这种情况下,逻辑AND(&amp;&amp;)绑定比赋值(=)更紧密。 (“Binds tighter”==“具有更高的优先权”。)
如果有疑问,我总是使用快速谷歌搜索“c运算符优先级表”来获取一堆结果页面,所有结果页面都按优先顺序提供有用的表格。 (实际上,当我怀疑在我自己的代码中时,我总是首先添加括号。)