Я ищу некоторую помощь с пониманием, почему я получаю значение. У меня есть основное меню для выбора и установки значений на микроконтроллере KL25Z (32-битная архитектура). У меня есть int, который не печатает значение выше 255. Что я делаю неправильно?неожиданное значение C структура
beacon.h
typedef struct _payload_t {
int t1_range;
} PAYLOAD_T;
beacon.c
#define BUFFSIZE 100
PAYLOAD_T payload;
int main (int argc, char *argv[])
{
char line[2];
int ret, select;
// print menu
print_menu();
// get menu input
ret = readline(line, BUFFSIZE, stdin, stdout);
select = atoi(line);
switch(select)
{
case 1:
uprintf(" Target 1 Starting Range: ");
ret = readline(line, BUFFSIZE, stdin, stdout); //--> 257
payload.t1_range = atoi(line);
printf(" Selection = %s\r\n", line); //--> 257
printf("(%d)\r\n",payload.t1_range); //--> 1
break;
... rest of case
}
return 0;
} //end main
Все работает нормально, пока значения выше 255 не будут введены, то отображаемые значения, кажется, вернуться к 1. Если payload.t1_range является int (16 бит), почему он действует как 8 бит?
Любая помощь или направление были бы очень признательны.
Спасибо!
Является точным представлением вашего кода? У одного «BUFFSIZE» есть два F. – Potatoswatter
Согласен; пожалуйста post ** настоящий ** код. –
Ключевое слово, наиболее близкое к 'typdef', -' typedef'. Кроме того, ваша 'строка' является ** элементом ** массива элементов char (независимо от того, что может быть BUFFSIZE или BUFSIZE). –