Приведение типов, проблема с языком - PullRequest
4 голосов
/ 04 сентября 2010

Я не могу понять некоторые синтаксисы типов.Например,

float f=7.0;
short s=*(short *)&f;

Что здесь происходит short s=*(short *)&f?Похоже, мы приводим something в качестве указателя на короткое замыкание, а затем инициализируем s значением, сохраненным в адресе, указанном something.

Теперь этот something выглядит как адреспеременной f.Поэтому, если something = address of f, мне кажется, что мы делаем address of f как указатель на некоторую короткую позицию, а затем снимаем с нее ссылку.Я знаю, что то, что я сказал, неверно, но я просто не могу это представить.

Спасибо.

Ответы [ 4 ]

5 голосов
/ 04 сентября 2010

Этот синтаксис был бы наиболее целесообразным, если бы short был того же размера, что и float, и даже в этом случае осталась бы проблема с " строгими правилами наложения имен ".

Используется для интерпретации битов float f как представляющих целое число. Он используется для обхода факта, что s = (short) f; будет интерпретироваться как преобразование в целое число. Я думаю, усечение.

2 голосов
/ 04 сентября 2010

Ваша интерпретация верна. По сути, это заставляет компилятор обрабатывать память, хранящую f, как если бы он действительно обрабатывал short. Результат этого будет зависеть от платформы. Это очень отличается от short s = (short)f;, который просто выполнит хорошее преобразование и будет четко определено.

1 голос
/ 04 сентября 2010

1. всякий раз, когда вы печатаете что-то, оно должно быть внутри скобок (). 2. Внутри примитивных типов не более высокий диапазон (размер), чем у других примитивных типов (вне скобок). 3. После приведения типа переменной она будет сохранена в том же типе примитива, который вы бы преобразовали. 4. Указатель означает, что он хранит память адреса. Он укажет звезду в c. (*)

0 голосов
/ 04 сентября 2010

Это должно быть:

float f=7.0; 
short s=*(short)&f; 

то есть короткому присвоено значение 7

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...