Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
0 / 0 / 0
Регистрация: 04.09.2023
Сообщений: 10

Почему инструкция If выполняется в любом случае

08.06.2025, 16:25. Показов 3568. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Я Полный ламер в программировании. Пытаюсь учить C. Пишу игру в командной строке. Вопрос почему инструкция If выполняеться в любом случае. Вот текст программы


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<stdio.h>
int main(void)
{
  int goblin_hp = 3;
  char action ;
    
 printf("You attack goblin!\n");
 printf("Goblin has %d lives\n", goblin_hp);
 printf("Press 'a' to attack, or 'r' to run!\n ");
 action = getchar ();
 printf("You press %c. \n", action);
 if (action = 'a'|| 'A' ){// Тут не работает if. Инструкция выполняеться какой бы символ не ввёл!!!!!!
 
 
 
    for(int goblin_hp = 3 ; goblin_hp > 0; goblin_hp--){ // 
     
    printf ("You kick goblin.\n");
    if(goblin_hp < 2){// не понял почему не еденица, но вот так работает?!
    printf("You kill the goblin.\n You found 15 gold coins.\n");
    }
   }
 }
  else if( action = 'r' || 'R' ) {
     printf("You run away .\n");
  }
return 0;
}

Добавлено через 2 минуты
То-есть условие выполняется в любом случае. То есть условный переход не работает.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.06.2025, 16:25
Ответы с готовыми решениями:

Условие if выполняется в любом случае
Здравствуйте, у меня есть вот такой код: const int size = 20; int* arr = new int; ...

Не выполняется инструкция if
double max_i = 4294967295; double max_d = 9223372036854775807.0; if (zerno &gt; max_i &amp;&amp; zerno &lt;...

name[name.size()] должен выдать наибольшее значение вектора, выдает ноль в любом случае.
int main(){ vector&lt;double&gt; temps; double temp; cout &lt;&lt; &quot;Введите последовательность...

24
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
24.07.2025, 17:02
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Royal_X Посмотреть сообщение
Вот захотел человек не подключать заголовок со всеми дефайнами, а решил просто прописать вручную только те, которые ему нужны.
И так как сам хочет, не "eq" а "равно". А кому то потом это всё рефакторить или править.
Ну а если для себя, то пусть иероглифами пишет.
Роял_Х, ну очевидно же все.
0
24.07.2025, 18:59

Не по теме:

Цитата Сообщение от Royal_X Посмотреть сообщение
Нужно различать вещи, которые встроены в сам язык, и обычные макросы в заголовке из стандартной библиотеки.
Вот и различай.
А еще нужно различать свои фантазии от того, что реально было написано.

Человек ПОСОВЕТОВАЛ автору темы написать пачку макросов, а я ему сказал, что их писать не нужно, потому что они уже и так есть. ВСЁ.
При чем тут язык? При чем тут "почему нельзя писать свои дефайны"? Где я ему запрещал писать свои дефайны?
Что ты вообще такое несёшь?
Тебе заняться нечем?

0
24.07.2025, 21:47

Не по теме:

Цитата Сообщение от DrOffset Посмотреть сообщение
Что ты вообще такое несёшь?
Тебе заняться нечем?
почему ты такой грубый?

0
 Аватар для vlisp
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,403
23.08.2025, 18:04
Цитата Сообщение от Raffinad Посмотреть сообщение
Я Полный ламер в программировании. Пытаюсь учить C.
Может почитаешь какую-нибудь книжку по си?
Си - это структуры и функции и больше ничего там нет
у тебя нет ни структур ни функций. Это очень незрелый код, который говорит что у тебя нет понимания что ты делаешь.
C
1
if ((action == 'a') || (action == 'A') )
вот сравни
ты не ламер, а большой кипящий чайник
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,874
21.09.2025, 13:01
Цитата Сообщение от Raffinad Посмотреть сообщение
int goblin_hp = 3;
и ниже
Цитата Сообщение от Raffinad Посмотреть сообщение
for(int goblin_hp = 3 ; goblin_hp > 0; goblin_hp--)
и далее
Цитата Сообщение от Raffinad Посмотреть сообщение
if(goblin_hp < 2){
какой goblin_hp проверяем первый или второй?
Цитата Сообщение от vlisp Посмотреть сообщение
Может почитаешь какую-нибудь книжку по си?
прочитай что такое область видимости
раньше до стандарта C99 такое не дозволялась ибо тогда все переменные должны быть в начале кода и объявление в цикле for были видны во всем коде
писали обычно так
C
1
2
3
4
5
6
7
8
{
int i;
......
for(i=0;i<2;i++)
..........
for(i=0;i<2;i++)
..........
}
а вот так не дозволялось
C
1
2
3
4
5
6
{
for(int i=0;i<2;i++)
..........
for(int i=0;i<2;i++)
..........
}
компилятор говорил что переменная i объявлена больше одного раза
потом в C99, под воздействием С++, ввели это и главное что переменные можно объявлять не вначале блока а где угодно.

Raffinad, ты объединил подход старого и нового стиля
ну а про сравнение == и присвоение = тебе уже написали
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.09.2025, 13:01
Помогаю со студенческими работами здесь

3.1 Посмотрите, вроде быстрая сортировка, в любом случае, можете переделать(лучше под с++)?
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;clocale&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt;...

Условие не соблюдается. выводит if в любом случае
вот код. что я делаю не так? на условие не обращайте внимания, я только учусь. суть в том, что он в...

Программа, считывающая диапазон и выдающая «OK» в случае успешного разбора или «FAIL» в случае неуспешного разбора
Здравствуйте! Недавно начал изучать Visual C++ и пока не получается сделать программу, а очень...

Нужно засунуть код инструкции в 4 char'a так, чтобы в памяти это был код инструкции.
Доброго времени суток. Есть дизассемблированный код. Нужно засунуть код иструкции в 4 чара так,...

Как возможно выйти в инструкции switch в начало самой инструкции при нажатии "не правильной" кнопки
В целом у меня вопрос такой: Как возможно выйти в инструкции switch в начало самой инструкции при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru