1. c语言强制类型转换问题
你好!
一步一步来
int a,b;
这句的功能是操作系统为
变量a,b分别分配一块空闲的存储空间
以后使用a,b将相当于访问各自所对应的
存储空间
a = 0000;b = Ox1234;
这句的功能是
把0000放到变量a所对应的存储空间
把0x1234放到变量b所对应的存储空间
重点是下面这句a = (char)(b)
它的功能相当于修改变量a的值,
具体是这样操作的,从b所对应的存储空间中取出
b的值即0x1234,然后把他转换成char类型,再然后将
转换后的结果放到变量a所对应的存储空间,即覆盖掉
原来的0000
这个转换后的结果又是多少呢,是这样算的
通常在C中int类型占4个字节 而char类型占1个字节
如果把一个int类型的数据以char类型输出,那么,编译器
会自动丢弃int类型的前3个字节的内容
对应本题
int类型的数据b是0X1234 为十六进制
在计算机中是这样存储的
0000 0000 0000 0000 0001 0010 0011 0100共4个字节
转换成char类型后,前3个字节丢弃
即结果是0011 0100 共1个字节 对应的十进制是52
当语句a = (char)(b)执行完后
这1个字节的值也就是52就放到了变量a所对应的存储空间,
而不是原来的0000了
所以,整个过程并没有改变变量a和b的数据类型
原来是int类型现在还是int型,程序只是修改了变量a
的值,连b的值都没有修改,因为修改a的值时只是从b所
对应的存储空间里把b的值取出来用一用,用的结果是修改成
char类型,但他把修改后的结果放到a所对应的存储空间了,
并没有放到b所对应的存储空间,所以原来b所对应的值没有被
覆盖,原来是0X1234,现在还是0X1234
仅供参考!呵呵
2. C语言如何转换数据类型
c语言类型转换分级别,一般多是:
默认状态:低级向高级转换,级别高低(小到大):int,float,double,(注意char只可以和int之间转换);
若要高级向低级转换:就要用到强制类型转换符!如int(7.7)=7;
3. C语言中的强制转换类型
我在VC++里运行了一下,是可以的啊
#include<stdio.h>
void main()
{
int i;
float x;
i=3;
x=(float)i;
printf("i=%d,x=%f",i,x);
}
注意一点:你的printf里有点小错误
4. C语言强制类型转换
强制类型转换是把变量从一种类型转换为另一种数据类型。
例如,如果想存储一个long类型的值到一个简单的整型中,需要把long类型强制转换为int类型。可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型。
发生在同一个编译系统中,比如说把int转化为longint,在VC++6.0里面,longint和int都是4个字节,不会有问题的,但是如果把int类型转化为short类型那就装不下了,简而言之就是长类型不能转化为短类型。
int类型如果要转化为float、double、longdouble类型的时候只是末尾多了几个0,但是反之转化,就会出现数据的损失,小数部位都被省略掉了。
赋值中的类型转换
当赋值运算符两边的运算对象类型不同时,将要发生类型转换, 转换的规则是:把赋值运算符右侧表达式的类型转换为左侧变量的类型。
由于C语言中的浮点值总是用双精度表示的,所以float 型数据只是在尾部加0延长为double型数据参加运算,然后直接赋值。double型数据转换为float型时,通过截尾数来实现,截断前要进行四舍五入操作。
以上内容参考:网络-C语言类型强制转换
5. C语言题 关于强制转换类型 麻烦有详细过程 谢谢
这个和强制类型转换没有啥关系。主要考察的是对指针进行++运算的时候,需要跳过的字节数。
对一个指针进行++运算,需要跳过他本身那个类型的长度。举个例子:
比如int *p,p++,int类型占用4个字节,那么p++一次就跳过4个字节。
比如short *p,p++,short类型占用2个字节,那么p++一次就跳过2个字节。
再看上面的题目:
char *p="abcdefgh"
long *q;
q=(long*)p;
将p强制转换成(long*)赋值给q,即q也指向"abcdefgh"这个字符串的首地址
q++;
这个时候执行q++的话,由于long类型占用4个字节,那么q就一次跳过4个字节,就指向"efgh",跳过了“abcd”4个字节。
r=(char*)q;
然后再将q强制转换成(char*)赋值给r,即r指向了q指向的"efgh"这个字符串的首地址
printf("%s\n",r);
然后打印r的话,就打印的是efgh了。
6. C语言怎样实行强制类型转换
string s = "123";
int i = (int)s;
7. C语言下的强制类型转换
内存中的数据和指令没有任何区别,关键在于程序如何去解释内存中的数据,你把它用作指令,它就是指令,你把它用作数据,它就是数据,这就是强制转换的意义,建议LZ看看王爽的《汇编语言》。。
上面的应该属于机器码的十六进制表示方式。。
好像那段指令有问题,我运行报错。。
8. c语言强制类型转换
1、int a;int b;double c = (double) a;double c = (double) b;int a = (int) c;这就是一种强制转变方法。
9. c语言中指针类型强制转换到底怎么写
假设你上面的例子中a是char*类型,则:
unsigned int*p = (unsigned int*)a;
这就是将a强制转换成unsigned int*类型。