Я столкнулся с проблемой в книге, когда я запустил код в MSDOSBox TurboC++ для Windows 7, он показал мне неожиданное поведение: -
код был следующим: -
#include <stdio.h>
#include <conio.h>
void main()
{
char s = 3;
switch(s)
{
case 1 :
printf("\nDiamond");
break;
case 2 :
printf("\nSpades");
break;
default :
printf("\nHeart");
break;
}
printf("\nI thought something like this");
getch();
}
теперь проблема была…
оператор в случае по умолчанию никогда не печатался. он только напечатал "Я думал что-то вроде этого"
Я понял, что в switch-case char рассматривается как его значение в коде ASCII.
Ну… здесь значение char s было указано 3, а не «3», но опять же, по крайней мере, должен быть напечатан регистр по умолчанию, даже если значение не похоже ни на один из случаев.
ну... если это поможет..
я пытался поставить
case 3 :
вместо
default :
теперь оператор, т.е. printf("\nHeart"); был казнен и напечатано "Сердце" на экране
\n
на\r\n
. В случае, если компилятор каким-то образом переназначает переводы строк, он может выводить строку по умолчанию, но немедленно перезаписывать эту строку с помощью printf в конце. - person Joachim Isaksson   schedule 23.11.2013int s = 3;
! - person Kevin Dong   schedule 23.11.2013case 1 :;
,case 2 :;
иdefault :;
- person Kevin Dong   schedule 23.11.2013colon
нетsemicolon
. Может бытьtokens bug
! - person Kevin Dong   schedule 23.11.2013