in this line :
if (!max && min ) {
when ! is used the whole line that is inside of the () means "not" or only "max" ??
in this line :
if (!max && min ) {
when ! is used the whole line that is inside of the () means "not" or only "max" ??
If in doubt, check C++ operator precedence.
Only "max". Same rule like in math you've learned in basic school (I hope).
the ! applies to only one statement. in the future you could have gotten an answer much faster than posting here by doing this:
max=false;min=false;
if (!max && min ) {
Serial.print("no");
}else{Serial.print("yes");}
Serial print is your best tool for testing code and debugging in arduino land.
gabrieldamakampos:
in this line :if (!max && min ) {
when ! is used the whole line that is inside of the () means "not" or only "max" ??
Can you not check this for yourself? Code something up that would tell you:
if (!false && false)
Serial.println ("condition true")
Its easy to ask the compiler questions like this!
Budvar10:
Only "max". Same rule like in math you've learned in basic school (I hope).
How?
A: Operators Table(showing precedence and associativity)
B: Example Code
bool max = false; bool min = false;
if (!max && min)
1. Fig-1 says that ! (precedence no: 3) has the higher precedence over && (precedence no: 13).
2. Fig-1 also says that the associativity of ! is from right to left.
3. So, the variable max is attached with ! operator; hence, !max will be evaluated first and will be assessed to true.
4. Now, true && min ==> true && false ==> false. (Why is not not true? It is not in the definition.)
5. The argument/condition/expression of if() structure will stand as false.
C: Verification Sketch
void setup()
{
Serial.begin(9600);
bool max = false; bool min = false;
if (!max && min)
{
Serial.print("condition true");
}
else
{
Serial.print("condition false");
}
}
void loop()
{
}
D: Screenshot