Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
h8er
15 / 15 / 5
Регистрация: 20.11.2013
Сообщений: 92
#1

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

18.12.2013, 03:55. Просмотров 196. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как работает выражение (C++):

Не работает регулярное выражение - C++
Здравствуйте, есть метод с регулярным выражением: bool Library::ValidGenreCode(std::string genreCode) { const std::string genreCodeExp...

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

Подставить в заданное выражение знаки +,-,*,/ так, чтобы выражение было истинным - C++
Помогите плз! Надо подставить в заданное выражение знаки +,-,*,/ так, чтобы выражение было истинным: ((((((1 2) 3) 4) 5) 6)=36 ...

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

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

Как вычисляется выражение - C++
Как вычисляется выражение while? char *str1; char *str2; ... while(*str2++ = *str1++); Что является окончанием цикла?

3
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.12.2013, 04:02 #2
Это не побитовая операция. Адрес x приводится к указателю на unsigned char, потом разыменовывается и содержимое сравнивается с 0.
1
h8er
15 / 15 / 5
Регистрация: 20.11.2013
Сообщений: 92
18.12.2013, 04:08  [ТС] #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Это не побитовая операция. Адрес x приводится к указателю на unsigned char, потом разыменовывается и содержимое сравнивается с 0.
А не могли бы вы объяснить подробнее, что происходит?
(unsigned short*) &x какой результат данного выражения? что происходит в памяти в этот момент.
и какой разультат последнего выражения(разыменования)?
0
alsav22
5426 / 4821 / 442
Регистрация: 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
18.12.2013, 04:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 04:24
Привет! Вот еще темы с ответами:

Как записать выражение? - C++
Ребята помогите оч прошу, срочно срочно надо!! Как записать выражение ? S=1в кубе+2 в кубе+3 в квадрате+ n в кубе

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

Почему не работает cin.clear() и как работает sync()? - C++
#include&lt;iostream&gt; #include&lt;cstring&gt; using namespace std; char*input(char*ch,int&amp;n){ cin.getline(ch,20); //cin.sync(); ...

setprecision() не работает, или работает не так как нужно - C++
cout &lt;&lt; setw(5) &lt;&lt; &quot;X=&quot; &lt;&lt; setprecision(2) &lt;&lt; X; cout &lt;&lt; setw(20) &lt;&lt; &quot;X=&quot; &lt;&lt; setprecision(0)&lt;&lt; X &lt;&lt; endl; cout &lt;&lt; setw(5) &lt;&lt; &quot;Y=&quot; &lt;&lt;...


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

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

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