anonymous
  • anonymous
In c++ lets say i have a variable char lets call it char variable; and i want to test it if it is any of these 'a', 'b', or 'c' after the user inputs a char will the below snip of code work as a shorcut if(variable== 'a'|| 'b' || 'c') cout << "your variable is one of those"; or do i have to do it the long way like below if(variable== 'a'|| variable =='b' || variable== 'c') cout << "your variable is one of those";
Computer Science
  • Stacey Warren - Expert brainly.com
Hey! We 've verified this expert answer for you, click below to unlock the details :)
SOLVED
At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.
katieb
  • katieb
I got my questions answered at brainly.com in under 10 minutes. Go to brainly.com now for free help!
anonymous
  • anonymous
Or lets say i made this function that takes char c and returns true if it is a number 0-9. Do I absolutely have to write it like that? all of it on the if statement? bool boolisnum( char c) { if (c=='0'||c=='1'||c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='7'||c=='8'||c=='9') return true; else return false; }; can if (c=='0'||c=='1'||c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='7'||c=='8'||c=='9') be reduced to if (c=='0'|| '1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9')
hba
  • hba
Use switch case.
bibby
  • bibby
char c = 'a'; if (c=='0'|| '1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9') cout << "test"; that code segment still outputs "test" no matter what value c is. I think the reasoning behind this is that you can think of characters as integers. if(CONSTANT) executes the conditional as long as the number doesn't evaluate to 0 (false). if('6') is the same thing as saying if(54). Look at the ascii table: http://www.asciitable.com/ bool b = true; if(1) and if(54) and if(-1) and if(b) all execute the conditional. Use a switch or the conditional operator. Either way, write it out.

Looking for something else?

Not the answer you are looking for? Search for more explanations.

More answers

anonymous
  • anonymous
I know for sure works. bool boolisnum( char c) { if (c=='0'||c=='1'||c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='7'||c=='8'||c=='9') return true; else return false; }; if i where to type in main boolisnum('4'); it will evaluate to true Note that idk what boolisnum(4); would do. It probably would not compile since 4 is of type int not char. I am just looking to make my code shorter by not putting all those c==' 's. oh and if boolisnum('b'); it evaluates as false.
bibby
  • bibby
#include isdigit() http://www.cplusplus.com/reference/cctype/isdigit/
bibby
  • bibby
or, switch(c){ case '1': case '2': ... case '0': etc. break; }
anonymous
  • anonymous
switch makes it longer. The whole point is to make my code shorter. Oh and os is messing up.
bibby
  • bibby
I literally just gave you a single function. It doesn't get shorter than that
bibby
  • bibby
bool boolisnum( char c){ if (isdigit(c)) return true; return false; }
anonymous
  • anonymous
yes thank you that does work now i wanna know is if (c=='0'|| '1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9') same as if (c=='0'||c=='1'||c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='7'||c=='8'||c=='9')
bibby
  • bibby
I explained it in my first post. It isn't the same thing
bibby
  • bibby
It'll always evaluate to true no matter what
anonymous
  • anonymous
darn so i do gotta use c=='0'||c=='1'||c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='7'||c=='8'||c=='9'
bibby
  • bibby
You don't gotta use anything when there's a function written for you. If you refuse to use perfectly find functions, yeah, you have to do that...
anonymous
  • anonymous
I am just saying as an example. I know there is one that checks for if its upper of lower case. BUt There wont be one for every single one of my needs :).
bibby
  • bibby
lol the STL is pretty comprehensive check http://www.cplusplus.com/reference/cctype/ for more. Read about how chars/ascii work in relation to integers. remember if(some constant that isn't 0) always evaluates to true
anonymous
  • anonymous
it is a huge library. And sometimes it be quicker making my function instead of looking for it :P
anonymous
  • anonymous
and it's a great learning experience :D
TuringTest
  • TuringTest
to reiterate why if (c=='0'|| '1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9') will always evaluate to "true", is because c++ interprets zero as false, and all non-zero values as true. No char has an ascii value of zero, as binary zero in ascii is the NUL value. For instance if (false || 1) will always evaluate to "true", since the second statement, 1, counts as true. equally it could be any non-zero number. if (false || -534.7) will also evaluate to "true" As far as the compiler is concerned, this is the same as if (false || true) only something like if (false || 0) will evaluate to "false", since zero counts as false. Since the char '0' has an ascii value of 48 in decimal, the statement if (false || '0') is equivalent to if (false || 48) which, as I explained above, is equivalent to if (false || true) which will, of course, evaluate to "true"
anonymous
  • anonymous
'a'=='d' will evaluate as false 'a'=='a' will evaluate as true i know that much.
bibby
  • bibby
there's no equivalence being done here. The characters are getting interpreted by their INTEGER ascii values. if('a') is the same thing as if(65) or whatever
anonymous
  • anonymous
idk what it does but those statements will work i have compiled them and it does work.
bibby
  • bibby
use full sentences because I don't understand you. if(c=='0'||'1'...) will not work...
anonymous
  • anonymous
Okay, ASCII was ordered the way it was for a reason. ``` # is digit if '0' <= variable <= '9': # is a,b, or c if 'a' <= variable <= 'c': ``` Look at the chart.
anonymous
  • anonymous
I suppose since this is C++ you should be using `if (` ... `) {` ... `}` instead, but the point still stands.
anonymous
  • anonymous
Why reinvent the wheel? Regex is a great way to check input against a pattern in any language. http://www.cplusplus.com/reference/regex/regex_search/

Looking for something else?

Not the answer you are looking for? Search for more explanations.