игнорируются условия в C++
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char const *argv[]) {
int sel;
cout<<"select :\n 1 - Yes\n 2 - No\n";
cin>>sel;
if(sel == '1') {
cout<<"Hello world!";
return 0;
}else if (sel == '2') {
string name;
cout<<"Enter your name:";
cin>>name;
cout<<"Hey"<<name<<"Bye world!";
return 0;
}
return 0;
}
Вот пример обычной программы где ключевую роль играют условия , пример бональный , но думаю и так понятно. Дело в том , что компилятор как будто не видит условия , компиляция проходит успешно , однако когда программа запускается и я делаю выбор , ничего не происходит. Я использую компилятор g++ для компиляции C++ , в компиляторе gcc , которым я компилирую код на Си , никаких проблем нет . Если что работаю я в Linux , дистрибутив KDE NEON
Ответы (2 шт):
Замените символьные литералы на целочисленные:
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char const *argv[]) {
int sel;
cout<<"select :\n 1 - Yes\n 2 - No\n";
cin>>sel;
if(sel == 1) { // Тут нужно было убрать '1' и поставить 1, и так далее.
cout<<"Hello world!";
return 0;
}else if (sel == 2) {
string name;
cout<<"Enter your name:";
cin>>name;
cout<<"Hey"<<name<<"Bye world!";
return 0;
}
return 0;
}
Ничего не игнорируется, все работает абсолютно корректно. В начале вы объявили переменную sel типа int, считали в нее пользовательский ввод и в условии сравнивает с символом '1'. Его целочисленное значение 0x31 в шестнадцатеричной системе счисления, либо 49 в десятичной. Если вводить 1 или 2, то они явно не равны 49. Ради образовательных целей введите в программу 49 и увидите Hello world. Исправить можно, например, изменив тип переменной set на char. И вам нужно почитать о типах в c++ и способах их преобразования.