C语言强制类型转换的疑惑

2020-02-01 16:14发布

谁能告诉我cmd =(unsigned char)-1 ;  cmd的值为多大? cmd的定义类型为unsigned char
也请求高人,讲解一些与强制类型转换的知识。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
yoz
2020-02-02 09:06
本帖最后由 yoz 于 2013-2-2 11:53 编辑

(编辑原因:补回我错误的思路,提出疑问,也消除话没说清楚引起的误会)
5.75就是101.11,也就是1.0111*2^10,对应应该是0 10000001 0111 0000 0000 0000 0000 000,对应的int应该是1085800448
(但是读出却是0,于是我做了实验)
/********************/
#include <stdio.h>

int main(void)
{
    float a = 5.75;
    int b;
    b = (int)a;
    printf("%d " , b);
    printf("%d " , a);//我故意试验两种方法的,在工作中不可能做这么2的事
    return 0;
}
/********************/
才明白
(int)5.75==5

float a=5.75;
printf("%d ",a);
会输出0
我之前对c理解的还是不到位
现在还是有疑惑,为什么用%d会输出0而不是1085800448?难道是大小端?我还不明白

一周热门 更多>