注册 登录
查看: 3087|回复: 215

【每日一题讲解】类型转换的用法

  [复制链接]
发表于 2013-11-26 01:05:32 | 显示全部楼层 |阅读模式
  1. int8 i = -1;
  2. uint16 t = i;
  3. printf("%d",t);

  4. A.0
  5. B.1
  6. C.255
  7. D.65535
请回答问题后再看答案哦,否则 每日一题 就没有意义了。
答错的,讲一下 为什么 会答错 呗!
答案回复可见!!


游客,如果您要查看本帖隐藏内容请回复

本帖被以下淘专辑推荐:

回复

使用道具 举报

 楼主| 发表于 2013-11-26 01:10:14 | 显示全部楼层

昨天题目的结果


【每日一题讲解】逗号表达式的用法 - 软件设计区 - 山外-vcan123论坛 http://www.vcan123.com/forum.php?mod=viewthread&tid=1168&extra=page%3D1


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2013-11-26 08:09:33 | 显示全部楼层
本帖最后由 JudeScorpio 于 2013-11-26 08:10 编辑

虽然很不情愿但是还是打错了:(
那就说一下
int i = -1;//1000 0001 -> 1111 1110 -> 1111 1111
uint t = i;//0000 0000 1111 1111 -> 2^8-1 = 255


回复 支持 反对

使用道具 举报

发表于 2013-11-26 09:10:42 | 显示全部楼层
抢沙发~我来顶楼主的
回复 支持 反对

使用道具 举报

发表于 2013-11-26 09:42:43 | 显示全部楼层
JudeScorpio 发表于 2013-11-26 08:09
虽然很不情愿但是还是打错了:(
那就说一下
int i = -1;//1000 0001 -> 1111 1110 -> 1111 1111

int8 ,其实我们题目表达的意思是 char
回复 支持 反对

使用道具 举报

发表于 2013-11-26 09:50:02 | 显示全部楼层
走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2013-11-26 10:02:55 | 显示全部楼层
带符号的转成不带符号的
回复 支持 反对

使用道具 举报

发表于 2013-11-26 10:32:04 | 显示全部楼层
C语言学的实在不怎么样
回复 支持 反对

使用道具 举报

发表于 2013-11-26 11:06:05 | 显示全部楼层
int i = -1;//1000 0001 -> 1111 1110 -> 1111 1111
uint t = i;//0000 0000 1111 1111 -> 2^8-1 = 255
想法同此楼。。。。。。
回复 支持 反对

使用道具 举报

发表于 2013-11-26 11:09:41 | 显示全部楼层
山外哥解释没看懂能详细一点么初学
回复 支持 反对

使用道具 举报

发表于 2013-11-26 11:10:22 | 显示全部楼层
山外哥解释没看懂能详细一点么初学真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-11-26 11:11:40 | 显示全部楼层
山外哥解释没看懂能详细一点么初学真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-11-26 11:12:35 | 显示全部楼层
STC89C52 发表于 2013-11-26 11:06
int i = -1;//1000 0001 -> 1111 1110 -> 1111 1111
uint t = i;//0000 0000 1111 1111 -> 2^8-1 = 255
想 ...

山外哥答案没看懂。。。。。。。。。详细一点呗初学真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-11-26 12:04:57 | 显示全部楼层
真棒!!非常感谢真棒!!非常感谢真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-11-26 12:05:13 | 显示全部楼层
真棒!!非常感谢真棒!!非常感谢真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-11-26 12:15:47 | 显示全部楼层
STC89C52 发表于 2013-11-26 11:12
山外哥答案没看懂。。。。。。。。。详细一点呗初学真棒!!非常感谢
  1. 题目是:
  2. int8 i = -1;
  3. uint16 t = i;
  4. printf("%d",t);
uint16 (unsigned short int)类型的 t  = int8 (char) 类型的 i
识别到 i 的值 为 -1
那么 假如是 int16 (short int)类型 j = i, j 的值 也是 -1 。
但题目给的是 uint16 类型 t ,则 t 就等于 (uint16)(-1) ,也就是 0xFFFF ,即65535。


编译器 进行赋值操作,考虑的不是内存的二进制值,而是实际的 逻辑值。

举个简单的例子
uint8 i = 1;
float t = i;  这里不是简单的复制二进制值,而是进行逻辑转换,转换为 float 值为 1 的值

回复 支持 反对

使用道具 举报

发表于 2013-11-26 12:17:39 | 显示全部楼层
STC89C52 发表于 2013-11-26 11:06
int i = -1;//1000 0001 -> 1111 1110 -> 1111 1111
uint t = i;//0000 0000 1111 1111 -> 2^8-1 = 255
想 ...

编译器 处理 不同类型的赋值时,不是简单的 二进制值赋值。

你的思维已经理解为 单纯的二进制赋值。

回复 支持 反对

使用道具 举报

发表于 2013-11-26 12:18:29 | 显示全部楼层
xuetudou 发表于 2013-11-26 10:32
C语言学的实在不怎么样

每日一题,就是给大家补充C语言知识。

后面我们也会考虑加入 嵌入式相关的知识
回复 支持 反对

使用道具 举报

发表于 2013-11-26 12:19:24 | 显示全部楼层
♂荻夜 发表于 2013-11-26 10:02
带符号的转成不带符号的

还有不同 位数的。8位 转 16位
回复 支持 反对

使用道具 举报

发表于 2013-11-26 12:31:36 | 显示全部楼层
Admin 发表于 2013-11-26 12:15
uint16 (unsigned short int)类型的 t  = int8 (char) 类型的 i
识别到 i 的值 为 -1
那么 假如是 int1 ...

谢谢山外哥的这么详细耐心的讲解嘻嘻嘻弄懂了
回复 支持 反对

使用道具 举报

发表于 2013-11-26 12:31:56 | 显示全部楼层
Admin 发表于 2013-11-26 12:15
uint16 (unsigned short int)类型的 t  = int8 (char) 类型的 i
识别到 i 的值 为 -1
那么 假如是 int1 ...

谢谢山外哥的这么详细耐心的讲解嘻嘻嘻弄懂了
回复 支持 反对

使用道具 举报

发表于 2013-11-26 13:38:21 | 显示全部楼层
走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2013-11-26 14:23:21 | 显示全部楼层
STC89C52 发表于 2013-11-26 12:31
谢谢山外哥的这么详细耐心的讲解嘻嘻嘻弄懂了

呵呵,如果还有不懂的,可以发帖咨询。

如果有好的适合初学的资料,可以发到我们的论坛上
回复 支持 反对

使用道具 举报

发表于 2013-11-26 14:23:31 | 显示全部楼层
STC89C52 发表于 2013-11-26 12:31
谢谢山外哥的这么详细耐心的讲解嘻嘻嘻弄懂了

呵呵,如果还有不懂的,可以发帖咨询。

如果有好的适合初学的资料,可以发到我们的论坛上
回复 支持 反对

使用道具 举报

发表于 2013-11-26 14:24:10 | 显示全部楼层
山外哥资料,不得不顶啊
回复 支持 反对

使用道具 举报

发表于 2013-11-26 15:54:54 | 显示全部楼层
走过路过,不能错过求学
回复 支持 反对

使用道具 举报

发表于 2013-11-26 15:56:15 | 显示全部楼层
真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-11-26 17:18:53 | 显示全部楼层
真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-11-26 17:44:11 | 显示全部楼层
抢沙发~我来顶楼主的
回复 支持 反对

使用道具 举报

发表于 2013-11-26 18:26:05 | 显示全部楼层
Admin 发表于 2013-11-26 12:18
每日一题,就是给大家补充C语言知识。

后面我们也会考虑加入 嵌入式相关的知识

赞!嵌入式可以有的!
回复 支持 反对

使用道具 举报

发表于 2013-11-26 19:18:09 | 显示全部楼层
好吧,又答错了
回复 支持 反对

使用道具 举报

发表于 2013-11-26 19:35:27 | 显示全部楼层
比妹子还漂亮,赞一个
回复 支持 反对

使用道具 举报

发表于 2013-11-26 19:58:16 | 显示全部楼层
C   看答案
回复 支持 反对

使用道具 举报

发表于 2013-11-26 20:47:17 | 显示全部楼层
答错了!!!
回复 支持 反对

使用道具 举报

发表于 2013-11-26 22:35:49 | 显示全部楼层
我答错了,看答案。。。
回复 支持 反对

使用道具 举报

发表于 2013-11-27 10:15:47 | 显示全部楼层
我猜选C
回复 支持 反对

使用道具 举报

发表于 2013-11-27 10:23:20 | 显示全部楼层
又做错了
回复 支持 反对

使用道具 举报

发表于 2013-11-27 15:34:27 | 显示全部楼层
好搞笑哦
回复 支持 反对

使用道具 举报

发表于 2013-11-28 10:44:21 | 显示全部楼层
走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2013-11-28 10:59:03 | 显示全部楼层
我把u16改成u32(typedef unsigned long int u32)为什么输出结果是-1?而不是2的32次方-1
回复 支持 反对

使用道具 举报

发表于 2013-11-28 13:08:56 | 显示全部楼层
C!这次不会错了吧
回复 支持 反对

使用道具 举报

发表于 2013-11-28 20:34:11 | 显示全部楼层
真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-11-29 00:42:54 | 显示全部楼层
真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-12-1 12:30:24 | 显示全部楼层
这个做对了~
回复 支持 反对

使用道具 举报

发表于 2013-12-20 19:27:03 | 显示全部楼层
走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2013-12-23 11:39:43 | 显示全部楼层
学习一下。。。。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2013-12-24 11:25:15 | 显示全部楼层
这个真顶!顶!
回复 支持 反对

使用道具 举报

发表于 2013-12-27 13:24:57 | 显示全部楼层
输出十进制的数应该是1
回复 支持 反对

使用道具 举报

发表于 2013-12-27 13:25:20 | 显示全部楼层

RE: 【每日一题讲解】类型转换的用法

输出十进制的数应该是1
回复 支持 反对

使用道具 举报

发表于 2014-1-3 19:00:42 | 显示全部楼层
不会,还是看答案吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部