Я с Andrew Rollings.
Теперь Вы могли обсудить эффективность пространства. Интервал что, 8 байтов макс.? Гуид идет в намного дольше.
, Но у меня есть две главных причины для предпочтения: удобочитаемость и время доступа. Числа легче для меня, чем GUID (так как я могу всегда находить следующую/предыдущую запись легко).
Что касается времени доступа, обратите внимание, что некоторый DBS может начать иметь БОЛЬШИЕ проблемы с GUID. Я знаю дело обстоит так с MySQL ( MySQL InnoDB Primary Key Choice: GUID/UUID по сравнению с Целочисленной Производительностью Вставки ). Это не может быть большой частью проблемы с SQL Server, но это - что-то, чтобы не упустить.
я сказал бы что палка с INT или BIGINT. Единственное время я думал бы, что Вы захотите GUID, - когда Вы собираетесь выделить их и не хотите, чтобы люди смогли предположить идентификаторы других записей из соображений безопасности.
Таким образом:
switch(menuChoice) {
case 'q':
case 'Q':
//Some code
break;
case 's':
case 'S':
//More code
break;
default:
}
Подробнее по этой теме: http://en.wikipedia.org/wiki/Switch_statement#C.2C_C.2B.2B.2C_Java.2C_PHP.2C_ActionScript .2C_JavaScript
Общепринятый синтаксис для этого:
switch(menuChoice) {
case 'q':
case 'Q':
//Some code
break;
case 's':
case 'S':
//More code
break;
default:
break;
}
, т. Е. Из-за отсутствия break
, выполнение программы каскадно переходит в следующий блок. Это часто называют "провалиться".
Тем не менее, вы можете, конечно, просто нормализовать регистр переменной menuChoice в этом случае с помощью toupper / tolower.
Просто используйте tolower()
, вот мой человек:
СИНОПСИС
#include ctype.hint toupper(int c); int tolower(int c);
ОПИСАНИЕ toupper () преобразует букву c в верхний регистр, если это возможно.
tolower() converts the letter c to lower case, if possible. If c is not an unsigned char value, or EOF, the behavior of these functions is undefined.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ Возвращаемое значение соответствует значению преобразованной буквы или c, если преобразование было невозможно.
Итак, в вашем примере вы можете switch()
использовать:
switch(tolower(menuChoice)) {
case('q'):
// ...
break;
case('s'):
// ...
break;
}
Конечно, вы можете использовать как toupper()
, так и tolower()
, с заглавными и не заглавными буквами.
Вы можете (и из-за соображений возможности восстановления) перед вводом оператора switch использовать tolower fnc на своей переменной.
'q' || 'Q'
приводит к результату типа bool ( true ), который повышается до целочисленного типа, используемого в условии переключения ( char ) - давая значение 1 Если бы компилятор разрешил использовать одно и то же значение (1) в нескольких метках, то при выполнении команды оператор switch будет сравниваться со значением 1 в каждом случае. Если бы menuChoice
имело значение 1, код под первой меткой регистра был бы выполнен.
Поэтому предлагаемые ответы здесь используют символьную константу (которая имеет тип char ) в качестве целочисленного значения в каждой метке.
switch (toupper(choice))
{
case 'Q':...
}
... или tolower.