社区
C语言
帖子详情
int a = 100, b = 100; long int c = a*b; 请教
lostyue
2011-07-01 04:28:23
rt c语言什么400问上面的,为啥这个不行?书上说赋值之前会溢出或者被截短,这个怎么讲?
菜鸟请教 谢谢了
...全文
352
21
打赏
收藏
int a = 100, b = 100; long int c = a*b; 请教
rt c语言什么400问上面的,为啥这个不行?书上说赋值之前会溢出或者被截短,这个怎么讲? 菜鸟请教 谢谢了
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lostyue
2011-07-01
打赏
举报
回复
结贴 给分~ 谢谢大家
lostyue
2011-07-01
打赏
举报
回复
[Quote=引用 18 楼 zjs100901 的回复:]
int a = 100, b = 100; long int c = a*b
a*b这个表达式还是int型的。
如果其值大于int可表示的数,而小于long int可表示的数,long int c = 1L*a*b;这样总可以吧。
[/Quote]
谢谢 ~
lostyue
2011-07-01
打赏
举报
回复
[Quote=引用 15 楼 luciferisnotsatan 的回复:]
可能书比较旧,int是2位,long int 是4位,而且a,b里至少有一个是1000。1000*100超出了int最大范围,int*int也不会提升类型,那就会截断了。
[/Quote]
好吧.. 3q 懂了..
zjs100901
2011-07-01
打赏
举报
回复
int a = 100, b = 100; long int c = a*b
a*b这个表达式还是int型的。
如果其值大于int可表示的数,而小于long int可表示的数,long int c = 1L*a*b;这样总可以吧。
至善者善之敌
2011-07-01
打赏
举报
回复
[Quote=引用 12 楼 lostyue 的回复:]
long long 是8个字节, Int 是4个字节
int a = 100, b = 100;
long long c = a*b;
这个就会出现溢出或者截短的问题么?
可以给解释下么?这个溢出 截短怎么讲?
[/Quote]
这个不会有什么问题,好比小桶装往大桶里倒水,那水是不会溢出的,反之则会溢出或截断
luciferisnotsatan
2011-07-01
打赏
举报
回复
[Quote=引用 15 楼 luciferisnotsatan 的回复:]
可能书比较旧,int是2位,long int 是4位,而且a,b里至少有一个是1000。1000*100超出了int最大范围,int*int也不会提升类型,那就会截断了。
[/Quote]
打错了
int是2字节,long int 是4字节
luciferisnotsatan
2011-07-01
打赏
举报
回复
可能书比较旧,int是2位,long int 是4位,而且a,b里至少有一个是1000。1000*100超出了int最大范围,int*int也不会提升类型,那就会截断了。
hackbuteer1
2011-07-01
打赏
举报
回复
不会出现截断、溢出的问题的。。
2401_863541072
2011-07-01
打赏
举报
回复
截断意思就是内存位数太小。。分配的内存表示不了那么大数
比如8位的最大表示2的8次方,那你弄个2的9次方往里存储必然存储不了
lostyue
2011-07-01
打赏
举报
回复
long long 是8个字节, Int 是4个字节
int a = 100, b = 100;
long long c = a*b;
这个就会出现溢出或者截短的问题么?
可以给解释下么?这个溢出 截短怎么讲?
ryfdizuo
2011-07-01
打赏
举报
回复
char short int double 这些类型转 可能会出问题。
int和long int不会。
lostyue
2011-07-01
打赏
举报
回复
[Quote=引用 7 楼 dizuo 的回复:]
int和long int都是4位。
[/Quote]
int a = 100, b = 100;
那如果 是 long long c = a *b就会出现了?
ryfdizuo
2011-07-01
打赏
举报
回复
[Quote=引用 7 楼 dizuo 的回复:]
int和long int都是4位。
[/Quote]晕死,四个字节。。。
lostyue
2011-07-01
打赏
举报
回复
问题:
int a = 100, b = 100;
long int c = a * b;
这样如果不用强制转换,这个赋值语句会有问题,出现问题的原因是 在复制时会出现溢出或被截短,我不太明白这个溢出 或 截短,long int如果是8位,int四位怎么会有问题?
ryfdizuo
2011-07-01
打赏
举报
回复
int和long int都是4位。
2401_863541072
2011-07-01
打赏
举报
回复
你的数据完全没问题
long ,int 都是4个字节,不用担心什么截断
hackbuteer1
2011-07-01
打赏
举报
回复
什么问题?
就想叫yoko
2011-07-01
打赏
举报
回复
int转long int 不会溢出 也不会发生截断
反过来就有可能发生
bdmh
2011-07-01
打赏
举报
回复
啥意思,截断常发生在数据类型转换时,比如double转int之类的
恨天低
2011-07-01
打赏
举报
回复
说清楚你的问题!?
加载更多回复(1)
关于
Int
eger的小问题
最近看到书上有一段代码让写出输出结果:
Int
eger a = 1;
Int
eger b = 1; System.out.pr
int
ln(a==b); System.out.pr
int
ln(a.equals(b)); 当时不假思索的就认为结果是false,true. 拿到机器上执行结果是true,true. 通过
请教
他人才知道,
Int
eger回对(-128-127)区间的值进行缓存。说是...
为什么System.out.pr
int
ln(a++) 输出的结果没有自增
小问题大智慧 今晚一个Java初学者来
请教
我,问了我几个问题 为什么
int
a=10; System.out.pr
int
ln(a++);这段代码输出的结果是10
long
a = 2147483648;为什么报错 double a= 10/3为什么等于3.0,而 double a= 10.0/3 却等于 3.3333 呵,这不是简单的不能再简单问题吗。很快啊,我嗖的一下告诉了她答案 System.out.pr
int
ln(a++) 输出结果10,是因为计算机的执行顺序的原因。在这一条语句中,计算机先执
c语言程序每句什么意思,新人
请教
C语言的每句意思。
该楼层疑似违规已被系统折叠隐藏此楼查看此楼1:#include
long
fac(
int
n);
int
judge(
int
n);main(){
int
n;for(n=
100
;n<=999;n++){if(judge(n))pr
int
f("此数为%d\n",n);}}
long
fac(
int
n){
int
sum=1,i;for (i=1;i<=n;i++){sum*=i;}retu...
关于递归的一个问题*
#includ<stdio.h> #include<string.h>
int
main() {
int
a = 0; char b[] = "123456"; char c[] = { 0 }; for (a = 1; a < 3; a++) { pr
int
f("请输入密码:>"); scanf("%s",c); if (strcmp(b, c)==0) { pr
int
f("登录成功\n"); break; } else.
c语言3个8等于6,请问C语言中t=b;t<<=8;t=t|a 这三个句子是什么意思
请问C语言中t=b;t<<=8;t=t|a这三个句子是什么意思0小弟我正用DS18B20做一个测温程序,unsigned
long
int
a=0;unsigned
long
int
b=0;unsigned
long
int
t=0;unsigned
long
int
tt=0;unsigned
long
int
q;unsigned
int
w;unsigned char d;...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章