C++ 从int到long int的类型转换

C++ 从int到long int的类型转换,c++,int,long-integer,typecasting-operator,C++,Int,Long Integer,Typecasting Operator,最近我搜索了int,long int,long。。。等等我从他那里得到了答案。我发现long和long int是相同的。所以这些声明 c=a*longb 及 c=a*长整数b 在程序中应该是相同的 int main() { int a = 10, b = 20; long int c; c = a *long(b); cout << c; return 0; } 但是第二个语句显示了一个错误 [错误]应为“long”

最近我搜索了int,long int,long。。。等等我从他那里得到了答案。我发现long和long int是相同的。所以这些声明 c=a*longb

c=a*长整数b

在程序中应该是相同的

int main()
{
    int a = 10, b = 20;
    long int c;
    
    c = a *long(b);
    cout << c;
    
    return 0;   
}
但是第二个语句显示了一个错误

[错误]应为“long”之前的主表达式


所以我只想知道,如果long和long int是相同的,那么为什么上面的两个语句会有错误呢?

仅仅因为它们是相同的类型并不意味着可以在源代码中直接交换字符

当T中有空格时,T强制转换会混淆语法

改为写c=a*long intb。

用括号表示。 例如


As类型铸造的数据类型有多个字。

@πάνταῥεῖ 你运行了错误的代码lol@LightnessRacesinOrbit哦,这篇文章愚弄了我:-P…很好。应该提到,长int是C方式,STATICESTASE是C++。班诺特:这两种都是C++中的有效。C++中你似乎很有经验。我不知道你说的“有效”是什么意思。工作可以接受吗?还是完全合适?我找到的所有引用都说“不要在C++中使用类似C的强制转换”。我无法回答一个问题,因为它将被标记为重复,但我读了很多你的帖子,我真的很好奇你对此的看法。@Benoit:它不是非常地道,特别是对于复杂类型,但就我而言,它对于算术类型来说是完全合适的。有些人会坚持对所有内容进行静态强制转换,但在这种情况下,这是不必要的冗长。事实上,就在前几天,我想到了这个:谢谢!这正是我想要的解释和“战斗”。
c = a * (long int) (b)