免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 17618 | 回复: 10
打印 上一主题 下一主题

如何convert size_t to int? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-31 01:35 |只看该作者 |倒序浏览
int x;
size_t y=100;
x=(int)y;

这个可以,请问有没有别的好的办法呢?

谢谢!

论坛徽章:
0
2 [报告]
发表于 2006-05-31 08:22 |只看该作者
不转换你的系统不能过去吗??
我的系统可以。
怎么都要强制转化,static_cast??

论坛徽章:
0
3 [报告]
发表于 2006-06-01 08:26 |只看该作者
能过去,但是警告。

论坛徽章:
0
4 [报告]
发表于 2006-06-01 13:35 |只看该作者
原帖由 hangover 于 2006-5-31 01:35 发表
int x;
size_t y=100;
x=(int)y;

这个可以,请问有没有别的好的办法呢?

谢谢!


这样做强制类型转换是很危险的,试想当size_t y = 65535(超过int类型值的范围)时。
后果是严重的。
一定要这么做吗?

论坛徽章:
0
5 [报告]
发表于 2006-06-01 16:41 |只看该作者
32bit system 两者是一样的
64bit system size_t 是八位的

论坛徽章:
0
6 [报告]
发表于 2006-06-01 16:47 |只看该作者
把一桶水倒到一杯子里面,如果桶里的水只有杯子容量那么大, 就不会倒满,
反之, 就会满溢出一些水...

论坛徽章:
0
7 [报告]
发表于 2006-06-01 21:49 |只看该作者
书上说  -2,147,483,646< int <2,147,483,646

估计一般情况应该没事吧.
给为觉得呢?

论坛徽章:
0
8 [报告]
发表于 2006-06-01 22:20 |只看该作者
原帖由 hangover 于 2006-5-31 01:35 发表
int x;
size_t y=100;
x=(int)y;

这个可以,请问有没有别的好的办法呢?

谢谢!



size_t 被定义为 unsigned int 类型

在你的代码中:

你要 y 值赋给 x 是没有任何的问题! 并不需要加上明码 进行 cast 操作

只是你必须清楚的一点是: 你在使用 int 类型 去操作 unsigned int 类型的数据。

关键是: 你必须明白,你要如何去使用它!

论坛徽章:
0
9 [报告]
发表于 2006-06-01 23:13 |只看该作者
原帖由 mik 于 2006-6-1 22:20 发表



size_t 被定义为 unsigned int 类型

在你的代码中:

你要 y 值赋给 x 是没有任何的问题! 并不需要加上明码 进行 cast 操作

只是你必须清楚的一点是: 你在使用 int 类型 去操作 unsigned int 类 ...



C语言是弱类型的语言,你要清楚你所作的所有数据类型转换。

论坛徽章:
0
10 [报告]
发表于 2006-06-02 02:23 |只看该作者
谢谢各位,
所以最好不要去转换,对吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP