Рубрики

C | Типы данных | Вопрос 1

Прогнозировать вывод следующей программы. Предположим, что числа хранятся в форме дополнения 2.

#include<stdio.h> 

int  main() 

   unsigned int x = -1; 

   int y = ~0; 

   if (x == y) 

      printf("same"); 

   else

      printf("not same"); 

   return 0; 

}

(A) то же самое
(Б) не то же самое

Ответ: (А)
Пояснение: -1 и ~ 0 по существу имеют одинаковую битовую комбинацию, следовательно, x и y должны быть одинаковыми. В сравнении y переводится в unsigned и сравнивается с x (см. Это для правил продвижения). Результат «такой же». Однако при интерпретации со знаком и без знака их числовые значения будут отличаться. х равен MAXUNIT, а у -1. Так как у нас есть% u для y, выходные данные будут MAXUNIT и MAXUNIT.

Тест на этот вопрос

Рекомендуемые посты:

C | Типы данных | Вопрос 1

0.00 (0%) 0 votes