2015-02-18 4 views
0

Это недавно появилось в классе. Проблема заключается в первом вхождении «ptr» в if. Ошибка: «выражение должно быть изменяемым значением».Почему эта программа VC++ не компилируется?

#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

Скобки - ваш друг. Таблица приоритетов операторов C/C++ глубока, а некоторые аспекты не являются интуитивными.

В этом случае логическое И (& &) связывается более жестко, чем присваивание (=). («Становится более напряженным» == «имеет более высокий приоритет».)

Когда я сомневаюсь, я всегда использую быстрый поиск по Google для таблицы с приоритетом оператора c, чтобы получить кучу результатов, все из которых обеспечивают полезную таблицу в порядке приоритета. (На самом деле, если у вас есть сомнения в моем собственном коде Я всегда просто добавляю скобки в первую очередь.)

Смежные вопросы