社区
C语言
帖子详情
关于C语言自动转换的问题
pang123hui
2009-10-13 11:54:57
今天在看一本C语言书时,看到这么一句话,是关于数值类型自动转换的,
即当遇到short ,char时,系统一律将其转换为int 参与运算
当遇到float时,系统一律将其转换为 double参与运算
那么,如果是这样的话,short,char和float 还有什么存在的意义呢?
我们程序员在写程序的时候,直接定义为int 和double不就可以了吗?
感谢回答
...全文
68
7
打赏
收藏
关于C语言自动转换的问题
今天在看一本C语言书时,看到这么一句话,是关于数值类型自动转换的, 即当遇到short ,char时,系统一律将其转换为int 参与运算 当遇到float时,系统一律将其转换为 double参与运算 那么,如果是这样的话,short,char和float 还有什么存在的意义呢? 我们程序员在写程序的时候,直接定义为int 和double不就可以了吗? 感谢回答
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pang123hui
2009-10-14
打赏
举报
回复
[Quote=引用 4 楼 supermegaboy 的回复:]
引用 3 楼 pang123hui 的回复:
引用 2 楼 supermegaboy 的回复:
那么,如果是这样的话,short,char和float 还有什么存在的意义呢?
我们程序员在写程序的时候,直接定义为int 和double不就可以了吗?
----------------------------------------------------------
类型的多样性是为了满足不同用户的需求。我只需要一个char的空间,为什么要用一个int的空间去定义?显然是浪费。
但类型提升不是因为用户需求,而是效率需求。short、char、float这些东西是语言对内存操作的不同抽象,是语言的高级特性,但对一个程序的执行效率而言却是有害的,只操作一种类型显然比操作多种类型更方便。类型提升就是提高程序运行效率的措施。
这样的话,可不可以理解为系统是牺牲空间来换取时间呢?
看来这应该是因为计算机存储空间的不断增加而在C99标准中新加入的吧(仅仅是我的猜测,未求证)
进行类型提升时,并没有改变原来对象的空间,而是产生一个可以随时抛弃的临时对象。没有空间换时间的问题。
[/Quote]
哦,我明白了,也就是说仅仅改变一下类型名称,使其统一,方便系统操作,提高效率是吧
飞天御剑流
2009-10-14
打赏
举报
回复
[Quote=引用 3 楼 pang123hui 的回复:]
引用 2 楼 supermegaboy 的回复:
那么,如果是这样的话,short,char和float 还有什么存在的意义呢?
我们程序员在写程序的时候,直接定义为int 和double不就可以了吗?
----------------------------------------------------------
类型的多样性是为了满足不同用户的需求。我只需要一个char的空间,为什么要用一个int的空间去定义?显然是浪费。
但类型提升不是因为用户需求,而是效率需求。short、char、float这些东西是语言对内存操作的不同抽象,是语言的高级特性,但对一个程序的执行效率而言却是有害的,只操作一种类型显然比操作多种类型更方便。类型提升就是提高程序运行效率的措施。
这样的话,可不可以理解为系统是牺牲空间来换取时间呢?
看来这应该是因为计算机存储空间的不断增加而在C99标准中新加入的吧(仅仅是我的猜测,未求证)
[/Quote]
进行类型提升时,并没有改变原来对象的空间,而是产生一个可以随时抛弃的临时对象。没有空间换时间的问题。
pang123hui
2009-10-14
打赏
举报
回复
[Quote=引用 2 楼 supermegaboy 的回复:]
那么,如果是这样的话,short,char和float 还有什么存在的意义呢?
我们程序员在写程序的时候,直接定义为int 和double不就可以了吗?
----------------------------------------------------------
类型的多样性是为了满足不同用户的需求。我只需要一个char的空间,为什么要用一个int的空间去定义?显然是浪费。
但类型提升不是因为用户需求,而是效率需求。short、char、float这些东西是语言对内存操作的不同抽象,是语言的高级特性,但对一个程序的执行效率而言却是有害的,只操作一种类型显然比操作多种类型更方便。类型提升就是提高程序运行效率的措施。
[/Quote]
这样的话,可不可以理解为系统是牺牲空间来换取时间呢?
看来这应该是因为计算机存储空间的不断增加而在C99标准中新加入的吧(仅仅是我的猜测,未求证)
飞天御剑流
2009-10-14
打赏
举报
回复
那么,如果是这样的话,short,char和float 还有什么存在的意义呢?
我们程序员在写程序的时候,直接定义为int 和double不就可以了吗?
----------------------------------------------------------
类型的多样性是为了满足不同用户的需求。我只需要一个char的空间,为什么要用一个int的空间去定义?显然是浪费。
但类型提升不是因为用户需求,而是效率需求。short、char、float这些东西是语言对内存操作的不同抽象,是语言的高级特性,但对一个程序的执行效率而言却是有害的,只操作一种类型显然比操作多种类型更方便。类型提升就是提高程序运行效率的措施。
pang123hui
2009-10-14
打赏
举报
回复
[Quote=引用 6 楼 supermegaboy 的回复:]
原来的类型并没有改变
char a;
int i;
......
i = a + 1;
之后,a的类型并没有改变,而是从a产生一个已提升的临时对象,用该临时对象参与加1运算。但a还是a,类型和空间都没有改变。
[/Quote]
恩,非常感谢回答,谢谢
飞天御剑流
2009-10-14
打赏
举报
回复
原来的类型并没有改变
char a;
int i;
......
i = a + 1;
之后,a的类型并没有改变,而是从a产生一个已提升的临时对象,用该临时对象参与加1运算。但a还是a,类型和空间都没有改变。
mstlq
2009-10-13
打赏
举报
回复
存放的时候……
内存是要钱的……
c to java
转换
工具
该软件可以把
c语言
文件
转换
为java语言文件
C语言
实现的 json格式字符串与结构体
自动
相互转化
在cjson基础上,实现了字符串与结构体
自动
相互转化的功能。 可以
自动
将字符串(JSON格式)转化为对应的结构体,反之亦可。
220个经典
C语言
源码
220个经典
C语言
源码 从简单到难的220来个经典C程序 第一部分 基础篇 001 第一个C程序 002 运行多个源文件 003 求整数之积 004 比较实数大小 005 字符的输出 006 显示变量所占字节数 007 自增/自减运算 008...
c语言
自动
类型
转换
规则,
C语言
类型
转换
的方法
C语言
的变量数据类型是可以
转换
的,
转换
的方法有两类,一种是
自动
转换
,一种是强制
转换
。
自动
转换
这种
转换
发生在不同数据类型的量混合运算或赋值时,由编译系统
自动
完成。
自动
转换
遵循以下规则:1,若参与运算量的...
C语言
自动
类型
转换
C语言
自动
类型
转换
C语言
69,380
社区成员
243,074
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章