Я предполагаю, что ответ Дэвида работает для некоторых компиляторов, но в компиляторе Microsoft я все же получил предупреждения и тот же результат. В какой-то документации на C ++ я заметил, что «long» обеспечивает только «ширину не менее 32 бит». Поэтому я изменил тип переменной и тип выражения на long long;
long long _varLLxxLL = 0x400000B0 * 4LL;
std::cout << "_varLLxxLL has value " << _varLLxxLL
<< ", the expression had type " << typeid(0x400000B0 * 4LL).name() << "\n";
Вывод:
_varLLxxLL имеет значение 4294968000, выражение имело тип __int64
blockquote >Сравнить с:
long _varLxxxLx = 0x400000B0 * 4L; std::cout << "_varLxxxLx has value " << _varLxxxLx << ", the expression had type " << typeid(0x400000B0 * 4L).name() << "\n";
Вывод:
_varLxxxLx имеет значение 704, выражение имеет тип long
blockquote>оставьте вопрос открытым пока.
Мне это понадобилось для использования Binding Resolutions из Eclipse AST framework. Но, по-видимому, это невозможно - для всех, кому это нужно, посетите этот сайт:
IResource
и его дочерний элемент IFile
изначально предназначались для использования только для ресурсов, находящихся в рабочей области. См. Javadoc для IResource .
Однако, начиная с Eclipse 3.3, есть поддержка и для внешних файлов,