关于二维数组的循环求和

想循环求矩阵的主对角线的和,副对角线的和,但是输出不了
在vc6++上面显示的是某个内存无法访问,dev上面没有什么提示。
#include <stdio.h>
int main (void)
{    
    int i,j;
    int sa=0,sb=0;
    int arr[][4]={{35,-5,88,56},{77,45,8,1717},{96,-100,67,28},{11,34,-254,666}};
    for(i=0;i<=3;i++)
    {
        sa+=arr[i][i];
        sb+=arr[i][3-i];
    }
    printf("主对角线的和为%sa,\n副对角线的和为%sb",sa,sb);
    return 0;
}

怎么才能正常输出


printf("主对角线的和为%sa,\n副对角线的和为%sb",sa,sb);

改成

printf("主对角线的和为%d,\n副对角线的和为%d",sa,sb);