В вашем коде есть несколько ошибок и недочетов, которые могут вызвать непредвиденное поведение. Давайте разберем их по порядку и предложим решения.
1. **Оператор присваивания вместо оператора сравнения**:
В строках `if (A = 0) {};` и `if (*B = 0) {};`, вы используете оператор присваивания `=` вместо оператора сравнения `==`. Это означает, что вам присваивается значение 0, и условие всегда будет истинным (если бы у вас не было переменной для проверки в условии). Замените `=` на `==`:
```cpp
if (A == 0) {};
if (*B == 0) {};
```
2. **Инициализация указателя**:
Строка `int* B = new(int);` не инициализирует память должным образом. Вместо `new(int)` вам нужно использовать `new int` для выделения памяти для переменной типа `int`. В противном случае, поведение программы будет неопределенным. Поэтому измените на:
```cpp
int* B = new int;
```
3. **Удаление выделенной памяти**:
Вы должны обеспечить освобождение памяти, которую вы выделили при помощи `new`, чтобы избежать утечки памяти. В конце программы добавьте `delete B;`. Так как у вас бесконечный цикл, лучше добавить блокировку выхода, чтобы это освобождение произошло:
```cpp
delete B;
```
4. **Бесконечный цикл**:
Программа находится в бесконечном цикле `while(1)`, поэтому она будет продолжать выполняться, и вам не будет возможности увидеть значения переменных, если они не удовлетворяют некоторым условиям для выхода из цикла. Вы можете добавить условие для выхода или хотя бы паузу.
Вот исправленный вариант вашего кода:
```cpp
#include <iostream>
int* B = new int;
int main(int argc, char** argv) {
unsigned short A = 0;
*B = 0;
unsigned short C = 0;
while (A < 10) { // Пример выхода из цикла для демонстрации
A += 1;
*B = *B + 1;
C += 1;
if (A == 0) {};
if (*B == 0) {};
// if (C == 0) {};
std::cout << A << " " << *B << " " << C << std::endl;
}
delete B; // Освобождение памяти
return 0;
}
```
Теперь ваш код будет работать без ошибок, и вы получите ожидаемые значения для переменных `A`, `*B` и `C`. Не забывайте, что управление памятью и правильное использование операторов (`==` для сравнения, `=` для присваивания) — ключевые моменты для избежания проблем.