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

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

08.06.2025, 16:25. Показов 3761. Ответов 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,425
23.08.2025, 18:04
Цитата Сообщение от Raffinad Посмотреть сообщение
Я Полный ламер в программировании. Пытаюсь учить C.
Может почитаешь какую-нибудь книжку по си?
Си - это структуры и функции и больше ничего там нет
у тебя нет ни структур ни функций. Это очень незрелый код, который говорит что у тебя нет понимания что ты делаешь.
C
1
if ((action == 'a') || (action == 'A') )
вот сравни
ты не ламер, а большой кипящий чайник
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
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
Ответ Создать тему
Новые блоги и статьи
ИИ и человечность
kumehtar 21.07.2026
Забавно, что общаясь с ИИ, я замечаю, насколько он высказывается умно, и насколько верит в людей. Он умеет прощать. Он знает как отвечать не обесценивая опыт других людей, даже если сам не верит. Он. . .
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного. 1. Почему показания термометра заряжены целью? Цель заложена в самом. . .
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ По ссылке 403. Не очень информативно такую ссылку постить. Запись от Usaga размещена Сегодня в 06:46 . . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru