Результаты поиска
Самый краткий способ определить, равна ли переменная значению из 'list' значений
Если у меня есть переменная в C#, которую нужно проверить, чтобы определить, равна ли она одной из множества переменных, как это лучше всего сделать?
Я не ищу решение, которое хранит набор в массиве. Мне больше интересно узнать, есть ли решение, которое использует булеву логику в некотором роде, чтобы получить ответ.
Я знаю, что мог бы сделать нечто подобное:
int baseCase = 5;
bool testResult = baseCase == 3 || baseCase == 7 || baseCase == 12 || baseCase == 5;
Мне любопытно посмотреть, смогу ли я сделать что-то еще, как это:
int baseCase = 5;
bool testResult = baseCase == (3 | 7 | 12 | 5);
Очевидно, что вышесказанное не сработает, но мне интересно посмотреть, есть ли что-то более сжатое, чем мой первый пример, который должен повторять одну и ту же переменную снова и снова для каждого тестового значения.
UPDATE:
Я решил принять ответ CoreyN, поскольку это кажется самым простым подходом. Это практично, и все еще просто для новичка, чтобы понять, я думаю.
К сожалению, там, где я работаю, наша система использует фреймворк .NET 2.0, и в ближайшее время нет никаких шансов на обновление. Есть ли какие-либо другие решения, которые не полагаются на фреймворк .NET 3.5, кроме самого очевидного, который я могу придумать:
new List<int>(new int[] { 3, 6, 7, 1 }).Contains(5);
Использование побитовых операторов для булевых чисел в C++
Есть ли какая-либо причина не использовать побитовые операторы &, |, и ^ для значений "bool" в C++?
Я иногда сталкиваюсь с ситуациями, когда я хочу, чтобы одно из двух условий было истинным (XOR), поэтому я просто бросаю оператор ^ в условное выражение. Я также иногда хочу, чтобы все части условия были оценены, является ли результат истинным или нет (вместо короткого замыкания), поэтому я использую & и |. Мне также иногда нужно накапливать логические значения, и &= и |= могут быть весьма полезны.
Я получил несколько поднятых бровей, когда делал это, но код все еще значим и чище, чем это было бы в противном случае. Есть ли какая-то причина NOT использовать их для bools? Есть ли современные компиляторы, которые дают плохие результаты для этого?
взаимодействие с stdbool.h C++
В проекте я взаимодействую между C++ и библиотекой C, которая использует stdbool.h, определенный как таковой.
#ifndef _STDBOOL_H
#define _STDBOOL_H
/* C99 Boolean types for compilers without C99 support */
/* http://www.opengroup.org/onlinepubs/009695399/basedefs/stdbool.h.html */
#if !defined(__cplusplus)
#if !defined(__GNUC__)
/* _Bool builtin type is included in GCC */
typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
#endif
#define bool _Bool
#define true 1
#define false 0
#define __bool_true_false_are_defined 1
#endif
#endif
Некоторые структуры имеют bool членов. Поэтому, если у меня есть одна из этих структур, определенных как локальные переменные в функции C++, и передать ее в функцию C, размеры будут несовместимы между C++ и C, поскольку bool-это один bye в C++ и 4 в C.
Есть ли у кого-нибудь советы, как преодолеть это, не прибегая к моему текущему решению, которое является
//#define bool _Bool
#define bool unsigned char
Что противоречит стандарту C99 для stdbool.h
Преобразование bool в текст в C++
Может быть, это глупый вопрос, но есть ли способ преобразовать логическое значение в строку таким образом, что 1 превращается в "true", а 0-в "false"? Я мог бы просто использовать оператор if, но было бы неплохо узнать, есть ли способ сделать это с помощью языка или стандартных библиотек. К тому же я педант. :)