static_cast<int>(a) 和 (int)(a) 的区别?

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
unsigned char a=5;
int b=0;
b=static_cast<int>(a) ;
b=(int)(a) ;
这两个强制转换的区别在哪?是一样的吗?
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

static_cast<int> (a)是C++方式,(int)a是C方式。

c方式的转换方式的优点是简单,缺点是比较粗暴,不能判断类型之间是否能直接转换。C++方式做了一些优化和调整。具体参考如下:

前一个是C++的方式,后一个是C的方式,,怎么说呢,第一个更安全吧