Вот код, чтобы проверить, что значение падает между диапазонеоценка короткого замыкания недостаток языка?
if((i <= n) && ((i+m) >= n){
//do something.....
};
Это в основном логическое И условие, и если оба операнда истинны, то результат условие истинно. Однако с оценкой короткого замыкания C++ проверяют только, является ли первое условие истинным, и если да, то он никогда не проверяет, является ли второе условие истинным. В правильном математическом смысле, как это булевой тест? Это полностью срывает логику моего кода, и вместо этого я должен был написать это:
if((i <= n){
if((i+m) >= n){
//do something......
}
}
Какой смысл оценки короткого замыкания, и как я могу сделать C++ сделать правильный булевой тест без использования вложенных если условия.
Вы обманываете свою жену, если она во вторник, и если она посещает ее родителей. Вы обманываете ее каждый вторник? –
Кому-то нужно пересмотреть свои [законы Де Моргана] (https://en.wikipedia.org/wiki/De_Morgan%27s_laws) – CoryKramer
У вас есть опечатка во втором условии - должна быть i + m – cup