C语言 超长数字运算 相加

img


数组设定是50,我进行30位的数字相加就会出现负号?
求助各路大神

考虑溢出了吗?
1)sum[50]长度跟num1,num2一样,显然不对。
11 + 11 = 22,2位数
11 + 99 = 1 10, 3位数

首位相加,存在进位情况。

2)int无法存储超过32位情况,而且首位表示符号位,实际是存31位(除开符号位)。如果31位有进位,修改了符号位,肯定不对。sum的类型,也应该是char[],并且理论最大长度应该是max(num1_len, num2_len) + 1