c++ char类型为什么输入类似char x = ”y“这种会报错,但int则能获取其为char型的值?

关于String,int,char的疑问
学c++的时候,有个例题是关于安全转换的:

include
using namespace std;
int main(){
char c=x’;
int i1=c;
int i2=x';

char c2 = i1;
cout<<c<<'\n'<<i1<<'\n'<<c2;
}

结果输出是x 120 x
此前输入char c = "x"; 输出报错,
我起初认为是因为x使用”“标记,所以被识别为String,而char范围小于String导致
但后来又想了下int,他与char也相差比较多,发现这个好像说不通,但int i1 = c却不会引起编译器报错,
这是什么原因?

双引号的是字符串, ”y“实际由2个字符组成,分别是'y'和'\0'

char c=''单引号