﻿# V3535\. AUTOSAR\. Operand of sizeof\(\) operator should not have other side effects\.

Данное диагностическое правило основано на руководстве [AUTOSAR](https://www.autosar.org/) \(AUTomotive Open System ARchitecture\) по разработке программного обеспечения\.

Оператор 'sizeof\(\)' не выполняет переданное ему выражение, а только вычисляет тип результирующего выражения и возвращает его размер на этапе компиляции\. Следовательно, для любого кода внутри 'sizeof\(\)' компилятор не генерирует ассемблерного кода \(невыполняемые контекст\), и ожидаемые операции внутри не будут произведены\. 

Поэтому операнд, передаваемый 'sizeof\(\)', не должен содержать каких\-либо сторонних эффектов, чтобы избежать потери операций\. 

Пример кода, на который анализатор выдаст предупреждение:

```cpp
int x = ....;
....
size_t s = n * sizeof(x++);
```

Для получения ожидаемого эффекта нужно переписать код следующим образом:

```cpp
int x = ....;
....
++x;
size_t s = n * sizeof(x);
```