﻿# V684\. Value of variable is not modified\. It is possible that '1' should be present instead of '0'\. Consider inspecting the expression\.

Анализатор обнаружил подозрительное выражение\. Выражение написано для того, чтобы изменить определённые биты в переменной\. Но значение переменной останется прежним\.

Пример подозрительного кода:

```cpp
MCUCR&=~(0<<SE);
```

Код взят из программы для микроконтроллера ATtiny2313\. Бит SE должен быть установлен в единицу для того, чтобы по команде SLEEP микроконтроллер перешел в спящий режим\. Чтобы избежать случайного перехода в спящий режим, рекомендуется устанавливать бит SE в единичное состояние непосредственно перед вызовом команды SLEEP и сбрасывать его после пробуждения\. Именно такой сброс и хотели сделать после пробуждения\. Но из\-за опечатки значение регистра MCUCR не изменится\. Получается, что хотя программа работает, она менее безопасна, чем могла быть\.

Исправленный вариант кода:

```cpp
MCUCR&=~(1<<SE);
```



**Примечание\.** Иногда возникает множественное ложное предупреждение V684\. Как правило, это связано с использованием больших и сложных макросов\. Способы подавления ложных срабатываний для макросов описаны в соответствующем разделе документации\.