求问一个关于long long类型的有关问题

求问一个关于long long类型的问题
#include<stdio.h>
#include<stdlib.h>

main()
{signed long long x=1<<45;

   
printf("%I64d\n",x);
system("pause");
}

这个的运行结果是0,似乎是左移溢出了,可是long long类型的大小是8字节,不应该溢出的把,这个是为什么?用的是Dev c++。求解释。。。

------解决方案--------------------
试试这样
signed long long x=1LL<<45
------解决方案--------------------
探讨
#include<stdio.h>
#include<stdlib.h>

main()
{signed long long x=1<<45;


printf("%I64d\n",x);
system("pause");
}

这个的运行结果是0,似乎是左移溢出了,可是long long类型的大小是8字节,不应该溢出的把,这个是为什么?用的是Dev c++。求解释。……