Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
h8er
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
1

Как работает выражение

18.12.2013, 03:55. Просмотров 216. Ответов 3
Метки нет (Все метки)

C++
1
2
unsigned short x = 1;
  printf("%s\n", *((unsigned char *) &x) == 0 ? "big-endian" : "little-endian");
В данном случае, что представляет собой unsigned char* что с ним можно провести побитовую операцию?
Вообще, если возможно, объясните поподробнее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2013, 03:55
Ответы с готовыми решениями:

Не работает регулярное выражение
Здравствуйте, есть метод с регулярным выражением: bool...

Как это работает? Я хочу спросить как работает C++ и где можно про него почитать
Привет, котоны. Заранее благодарю. Это будет моих общих вопросов нить, т.к....

Подставить в заданное выражение знаки +,-,*,/ так, чтобы выражение было истинным
Помогите плз! Надо подставить в заданное выражение знаки +,-,*,/ так, чтобы...

Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» — True, «F» — False): <выражение> :
помогите пожалуйста решить задачку на рекурсию Вывести значение логического...

Как записать выражение
Нужно вычислить значение из выражения \sqrt{|{x}^{3}-1|}-7cos*\sqrt{{x}^{4}+x}

3
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.12.2013, 04:02 2
Это не побитовая операция. Адрес x приводится к указателю на unsigned char, потом разыменовывается и содержимое сравнивается с 0.
1
h8er
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
18.12.2013, 04:08  [ТС] 3
Цитата Сообщение от alsav22 Посмотреть сообщение
Это не побитовая операция. Адрес x приводится к указателю на unsigned char, потом разыменовывается и содержимое сравнивается с 0.
А не могли бы вы объяснить подробнее, что происходит?
(unsigned short*) &x какой результат данного выражения? что происходит в памяти в этот момент.
и какой разультат последнего выражения(разыменования)?
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.12.2013, 04:24 4
Цитата Сообщение от h8er Посмотреть сообщение
что происходит в памяти в этот момент.
В памяти ничего не происходит. Меняется трактовка компилятором того, что находится по адресу переменной. Извлекается содержимое младшего байта (в архитектуре х86 младший байт первый в памяти по адресу) переменной unsigned short, и сравнивается с 0.

Добавлено через 2 минуты
Чтобы извлечь содержимое именно одного байта, а не двух (размер unsigned short) и делается приведение к unsigned char*.

Добавлено через 1 минуту
Чтобы лучше видно было, можно так написать и поэкспериментировать:
C++
1
2
3
unsigned short x = 0x0001; // старший байт 00, младший байт 01
    
printf("%s\n", *((unsigned char *) &x) == 0 ? "big-endian" : "little-endian");
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 04:24

Как вычисляется выражение a+++b?
Здравствуйте. Как вычисляется выражение a+++b? Как компилятор понимает, что...

Как записать выражение?
Ребята помогите оч прошу, срочно срочно надо!! Как записать выражение ?...

Как прочитать выражение?
typedef void *paint(char,void*);


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru