`long long int a=50` 和 `int a =50LL` 有什么区别?

Wol*_*ang 2 c++ types

我从 Josh Lospinoso 的 C++ 速成课程开始学习 C++。

我无法将我的思想集中在“类型”上。

long long int a=50和 和有什么区别int a =50LL?对我来说,他们俩看起来都像long long int

我尝试运行这个:

#include<cstdio>
int main() {
    long long int a=50;
    int b=50LL;
    printf("a is %lld and b is %lld",a,b);
}
Run Code Online (Sandbox Code Playgroud)

并得到:

a 为 50,b 为 18042367336513586

所以格式说明符或有问题int b=50LL

将 b 的格式说明符更改为%d. 我得到:

a 为 50,b 为 50

那么这是否意味着这b是默认的 'int' ?如果是的话,那么它的作用是什么LL

在浏览类型时,我发现了这个。所以我尝试运行这个:

#include <iostream>
#include <typeinfo>

int main(){
    long long int a = 50;
    int b = 50LL;
    std::cout << typeid(a).name() << std::endl;
    std::cout << typeid(b).name() << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这给了

xi

所以它们确实是不同类型的(?)。但为什么?

Sam*_*hik 6

long long int a=50;
Run Code Online (Sandbox Code Playgroud)

这声明了一个long long int变量,并将其初始化为 50。

int a =50LL;
Run Code Online (Sandbox Code Playgroud)

这声明了一个int变量,并将其初始化为 50。常量值 50 在词法上被指定为long long整数常量,它被转换为int, ,以用于初始化a(无论如何,其本身绝对没有完成任何有用的事情)。

所以区别在于你最终会得到 along long intint名为 的变量a。在这两种情况下,它们都初始化为 50。