Я - студент программирования в своем втором классе ООП, и у меня есть простой вопрос, на который я не был в состоянии найти ответ в Интернете, если это там, я приношу извинения.
Мой вопрос - это:
Это возможно, имеют булевы условия в операторах переключения?
Пример:
switch(userInputtedInt)
{
case >= someNum && <= someOtherNum
break;
// Is this possible?
}
Нет, это невозможно в C ++. Выключатели коммутации поддерживают только целые числа и символы (они будут заменены их значениями ASCII) для совпадений. Если вам нужно сложное логическое состояние, то вы должны использовать блок IF / Evel
Нет, это обычно это обзор , если выбрано
:
if ((userInputtedInt >= someNum) && (userInputtedInt <= someOtherNum)) { ... }
, конечно, вы можете включить в себя выключающее устройство
:
switch (x) {
case 1:
// handle 1
break;
default:
if ((x >= 2) && (x <= 20)) { ... }
}
-121--3448128- Это невозможно напрямую - оператор коммутатора C или C ++ требует, чтобы каждый случай постоянна, а не булевое выражение. Если у вас равномерно распределенные диапазоны, вы часто можете получить тот же эффект, используя целочисленное разделение, хотя. например Если у вас есть входы от 1 до 100, и хотите работать с 90-100 в качестве одной группы, 80-89 в качестве другой группы, и т. Д., Вы можете разделить свой вход на 10, и каждый результат будет представлять диапазон.
-121--3448129-Как и другие, вы не можете реализовать это напрямую , так как вы пытаетесь сделать, потому что синтаксис C ++ не позволяет ему. Но вы можете сделать это:
switch( userInputtedInt )
{
// case 0-3 inclusve
case 0 :
case 1 :
case 2 :
case 3 :
// do something for cases 0, 1, 2 & 3
break;
case 4 :
case 5 :
// do something for cases 4 & 5
break;
}
Это невозможно. Самое близкое, что вы можете немного, если значения достаточно близки друг к другу, это
switch(userInputtedInt)
{
case someNum:
case someNum+1:
// ...
case someOtherNum:
break;
}
Для затмения я использую следующее: window - > preferences - > java - > editor - > save action - > установите флажок для организации импорта (там также есть много других полезных вещей, таких как форматирование, завершение полей и т. д.). Поэтому, когда я сохраняю мой файл затмение удаляет неэссенциальный импорт для меня. На мой взгляд, если вам что-то не нужно, то уберите его (или пусть уберут затмением).
-121--746370-Это может быть так же просто, как вы забываете избежать обратной косой черты. Вместо
bmp.LoadBitmap("c:\aeimg");
используйте
bmp.LoadBitmap("c:\\aeimg");
В противном случае передается недопустимый путь к методу LoadBitmap.
-121--3294870-C++ не поддерживает это.
Однако, если вы не хотите писать портативный, стандартный код некоторые компиляторы поддерживают этот расширенный синтаксис:
switch(userInputtedInt)
{
case someNum...someOtherNum:
break;
}
Эти значения должны быть постоянными.
Silverlight или WPF, если требуется дополнительная мощность. Обе модели имеют схожую модель программирования (с XAML и кодовым отставанием), так что вы можете начать с Silverlight и при необходимости перейти на WPF.
-121--4631907-Это настольное приложение? Если так, я бы использовал WPF. Silverlight является подмножеством WPF, поэтому с помощью WPF можно потенциально сделать больше.
-121--4631906-Если вам нужен препроцессор, вы можете написать какой-нибудь макрос, который автоматически расширится до требуемого количества инструкций case. Однако это потребовало бы длинного файла с практически всеми утверждениями (например, # define CASE0 case 0: # define CASE1 case 1:...)
Вы не должны идти туда, но это весело сделать... для удовольствия!;)
Нет, это обычно является обзором , если выбрано
:
if ((userInputtedInt >= someNum) && (userInputtedInt <= someOtherNum)) { ... }
, конечно, вы можете включить в действие выключатель
:
switch (x) {
case 1:
// handle 1
break;
default:
if ((x >= 2) && (x <= 20)) { ... }
}
Нет, это, как правило, это обычно обзор , если
утверждение:
if ((userInputtedInt >= someNum) && (userInputtedInt <= someOtherNum)) { ... }
, конечно, вы можете включить в действие выключатель
:
switch (x) {
case 1:
// handle 1
break;
default:
if ((x >= 2) && (x <= 20)) { ... }
}
-121--3448128- Это невозможно напрямую - оператор коммутатора C или C ++ требует, чтобы каждый случай постоянна, а не булевое выражение. Если у вас равномерно распределенные диапазоны, вы часто можете получить тот же эффект, используя целочисленное разделение, хотя. например Если у вас есть входы от 1 до 100, и хотите работать с 90-100 в качестве одной группы, 80-89 в качестве другой группы, и т. Д., Вы можете разделить свой вход на 10, и каждый результат будет представлять диапазон.