初学C,问个低级问题(代码),谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/30 05:17:02
我刚学c,问下下面这个结果为什么m=-30336,n=362880

#include <stdio.h>
main()
{long m,n;
m=1*2*3*4*5*6*7*8*9;
n=1L*2*3*4*5*6*7*8*9;
printf("m=%7d,n=%7d \n",m,n);
}
我只知道的是:如果表达式中无float型或double型,但是有long型,数据自动转换为long型再运算。无long,就按int算,不是么?虽然“n=1L*2*3*4*5*6*7*8*9”里面有个L,但m,n定义的就是long啊“long m,n”,m怎么会按int算呢?谢谢

你输出的时候有问题%d是int
long是%ld
你改一下,在看看

不知道你怎么说它是按int算的

m,n的值符合long的取值范围啊
这是我的理解 我也初学c# 这问题你应该到c/c++里面去提问

同意楼上的,楼主看一下