if (i != 0 && i != 15 && i != 20)
{
...
}
For the above code snippet, how can I combine all the conditions so I won't have to use multiple comparison operators?
In other languages, you might use something like:
if (!(i in (0, 15,20)))
{
...
}
But as far as I know, this does not work in C.
So there's no way out of this.
However, I would advise you to use the following formatting:
if (i != 0 && // meaning of 0 value
i != 15 && // meaning of 15 value
i != 20) // meaning of 20 value
{
...
}
As you see, putting every single condition on a separate line increases readability and gives you the opportunity to add comments for that one condition. The usage of such comments is seen as a burden by starting programmers, but once you have experienced the burden of needing to re-think a piece of code, multiple months after having developed it, you'll understand the usage of such comments :-)
If you only have 3 checks to perform, the chained && in your original code is probably the most readable and shouldn't be changed. Just keep De Morgan's Laws in mind when negating boolean expressions - getting those wrong is a common bug.
You could use a loop, but that's probably only sensible if you have a whole lot of checks to carry out than just 3:
const int conditions[] = {0, 15, 20};
bool ok= true;
for(size_t i=0; i<sizeof conditions/sizeof *conditions; i++)
{
if(n==conditions[i])
{
ok = false;
break;
}
}
if(ok)
{
...
}
For values less than 256 you could also perhaps use memchr, though that's also more obscure than what you already have:
#include <string.h>
const unsigned char conditions[] = {0, 15, 20};
if(memchr(conditions, n, sizeof conditions) == NULL)
{
// n does not equal any of the conditions
}
bsearch.
i == value.switchstatement, and for!=put the code block into thedefaultsection. Whether that's "nice", or "readable" depends very much on the task at hand. It's more stuff to type, so that's probably not what you're asking.if (!inarray(i, (int[]){0, 15, 20}, 3)) { /* ... */ }... theinarray()function implementation is left as an exercise