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

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

08.06.2025, 16:25. Показов 3954. Ответов 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,443
23.08.2025, 18:04
Цитата Сообщение от Raffinad Посмотреть сообщение
Я Полный ламер в программировании. Пытаюсь учить C.
Может почитаешь какую-нибудь книжку по си?
Си - это структуры и функции и больше ничего там нет
у тебя нет ни структур ни функций. Это очень незрелый код, который говорит что у тебя нет понимания что ты делаешь.
C
1
if ((action == 'a') || (action == 'A') )
вот сравни
ты не ламер, а большой кипящий чайник
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
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
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru