Почему "==0" так влияет на код?
Скорее всего здесь нужно включить логику, но поверьте, сколько бы я не пытался так и не смог понять почему код под номером "1" выводит только результат деления на число без остатка, а код под номером "2" выводит только числа которые делятся на число без остатка? можно посмотреть и понять что это из-за функции "if", в котором условия(или параметры) отличаются. Но неужели это из-за этого отличия " == 0 "? Если это так, то почему это так работает? Я не могу понять, заранее спасибо за ответ.
КОД ПОД НОМЕРОМ "1":
#include <iostream>
using namespase std;
int main(){
int num = 1;
while(num <= 50){
if (num % 3){
cout << num << endl;
}
num += 1;
}
return 0;
}
КОД ПОД НОМЕРОМ "2":
#include <iostream>
using namespase std;
int main(){
int num = 1;
while(num <= 50){
if (num % 3 == 0){
cout << num << endl;
}
num += 1;
}
return 0;
}
Ответы (1 шт):
Условие if (num % 3) означает if ((num % 3) != 0)
Если остаток от деления не равен нулю, то выполняется первая ветвь if-a, а если равен, то вторая.
Условие if (num % 3 ==0) означает:
Если остаток от деления равен нулю, то выполняется первая ветвь if-a, а если не равен, то вторая.
Так что же удивительного в том, что противоположные условия дают противоположные результаты?
По вопросу из комментария - оператор if работает согласно народному творчеству
"Деньги есть - Уфа гуляем, денег нет - Чишма сидим."
Если условие выполняется, т.е. выражение в скобках после if равно True то работает первая ветвь после if, если нет (выражение в скобках после if равно False или нулю (во многих языках)), то работает ветвь else (если она присутствует)