在C中乘以数字

Kon*_*eri 2 c printf types specifier

我写了下面的代码来乘以两个数字,我看到结果是不正确的.我假设数据类型没有保持正确的值.但它的打印答案是错误的.

#include<stdio.h>
main()
{
    long int val1,val2;
    val1=val2=1235;
    char c = 'y';
    switch(c)
    {
        case 'y' : printf("%20d",val1*val2);
            break;
        default: printf("invalid");
            break;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:
17897 //这不是正确答案
//它应该实际上是1525225

Grz*_*rek 11

数据类型保持正确的值,但您使用的是错误的说明符.你应该使用%ldlong int.

printf("%20ld",val1*val2);

我仔细检查了它的确有效.