(C++) if else
Ostatnio zmodyfikowano 2017-09-20 21:33
Antyflash Temat założony przez niniejszego użytkownika |
(C++) if else » 2017-09-19 21:34:58 Czemu program po wpisaniu liczby mniejszej od stu pokazuje ją a nie przekierowuje do else?
string x; int main()
{ cout << "liczba " ; cin >> x; if(x>="100") { cout<<x; } else { cout<<"zle"; |
|
Kinexity |
» 2017-09-19 21:48:58 Bo porównujesz liczbę do ciągu znaków... |
|
maly7 |
» 2017-09-20 13:01:38 Nie do końca porównuje liczbę do ciągu znaków, x również jest stringiem.
Antyflash, co według ciebie będzie robiło takie porównanie stringów? Raczej nie chcesz porównywać ze sobą stringów tylko liczby.
Porównywanie stringów działą tak: "32" > "102" - true "19999" > "2" - false |
|
Kinexity |
» 2017-09-20 15:09:19 Nie zauważyłem, że x to string. Tak, czy inaczej - porównywana jest długość stringów, a nie liczby. |
|
carlosmay |
» 2017-09-20 15:22:55 |
|
Monika90 |
» 2017-09-20 16:02:36 Carlosmay, tak, std::stringi są porównywane leksykograficznie, ale ty porównujesz adresy tablic. |
|
carlosmay |
» 2017-09-20 21:33:50 Dzięki @Monika za uwagę: (chwilowa niepamięć) Tak, czy inaczej - porównywana jest długość stringów, a nie liczby. |
#include <iostream> #include <string>
int main() { std::string s1 { "100" }, s2 { "000010" }; std::cout << std::boolalpha <<( s1 > s2 ) << std::endl; } |
|
« 1 » |