2016-06-24 6 views
0

Недавно я искал разницу между int, long int, long, ... и так далее. И я получил ответ от here. И я обнаружил, что long и long int идентичны. Таким образом, заявление c = a *long(b);Typecasting от int до long int

и

c = a * long int (b)

должно быть таким же в программе

int main() 
{ 
    int a = 10, b = 20; 
    long int c; 

    c = a *long(b); 
    cout << c; 

    return 0; 
} 

Но второе утверждение показывает сообщение об ошибке

[Ошибка] ожидаемом первичные -выражение до 'long'

Так что я просто хочу знать, если long и long int идентичны, поэтому почему в приведенных выше утверждениях есть ошибка?

+1

@ πάνταῥεῖ Вы используете неправильный код lol –

+0

@LightnessRacesinOrbit О, ОП обманул меня :-P ... –

ответ

7

Просто потому, что они одного типа, это не означает, что вы можете буквально обменять символы в исходном коде.

Синтаксис путают T(), когда T имеет пробел в нем.

Вместо этого напишите c = a * (long int)b.

+0

Хороший. Следует упомянуть, что '(long int)' является C-way, а 'static_cast ' является C++. – Benoit

+0

@Benoit: Оба действительны в C++. –

+0

Вы, кажется, очень опытный в C++. Интересно, что вы подразумеваете под «действительным». За работой ? Приемлемо ? или идеально подходит? Все ссылки, которые я нашел, «не используют C-like cast в C++». Я не могу открыть вопрос, потому что он будет помечен как дубликат, но я прочитал много ваших сообщений, и мне действительно интересно узнать ваше мнение об этом. – Benoit

0

Используйте скобки для этого. например.

c = a * (long int) (b) 

As type литой тип данных есть многоязычный.