c语言中有关数据类型的强制转换

#include<stdio.h>
void main()
{
short a=65535;
long b,c;
c=(long)a;
c++;
printf("%d\n",c);
}
输出的结果居然是0,即使是不用强制转换c=a;系统就会自动完成转换啊,为什么强制转换后还是不能显示到65536??我用到是visual c++

短整型short占两字节,其最大正值为32767,对应二进制0111 1111 1111 1111。而65535为二进制的1111 1111 1111 1111,此时a的值为-1。因而c++后c的值为0。
注意:无符号短整型unsigned short的最大值才为65535。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-03-24
char
c
=
-3;//(fd)H
你把c强转成unsigned就成了unsigned形式的(fd)H,也就是253(=128+64+34+16+8+4+1),因为unsigned形式只存在正数,253的unsigned
char会被强转成long,还是253,然后就,5+4*(253)
=
1017,所以结果是1017。
还好你知道补码,否则这问题要有得讲了。
第2个回答  2011-08-04
你的c定义的就是short,这个是无法改变的
强制转换指的是计算时,进行临时转换,是靠临时变量实现的
第3个回答  2011-08-04
同学调试一下便知道了
short a = 65535;
应该是超出了范围 结果为-1
c=(long)a -1强转成功为-1
c++ 这里-1 变为0
结果输出是0
第4个回答  2011-08-04
short a = 65535; //65535对应0xffff,溢出,a的实际的值为-1
所以c = (long)a;
c++;
得到的c为0
如果你想得到65536
那么a的类型应为unsigned short

c语言中有关数据类型的强制转换
短整型short占两字节,其最大正值为32767,对应二进制0111 1111 1111 1111。而65535为二进制的1111 1111 1111 1111,此时a的值为-1。因而c++后c的值为0。注意:无符号短整型unsigned short的最大值才为65535。

c语言强制类型转换
C语言中的强制类型转换是一种显式地改变数据类型的方式。这种转换通常在需要将一种类型的数据转换为另一种类型时使用。在C语言中,强制类型转换的语法是使用括号将目标类型包围起来,然后将要转换的变量或值放在括号后面。例如,将整型变量转换为浮点型可以使用如下语法:float myFloat = myInt;其中,myInt...

C语言中如何把数组强制类型转换
在C语言中,若要将数组进行强制类型转换,关键在于明确定义数组元素的类型。例如,定义了两个数组a和b,分别作为字符数组和整型数组。通过循环赋值,可以将字符数组a的元素复制至整型数组b中。具体实现如下:首先,定义字符数组a和整型数组b,均为长度为10的数组。接着,使用for循环对数组元素进行赋值操作。

C语言可以强制转换数据类型吗?
可以使用强制转换,其一般形式为:(类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。例如: (float) a 把a转换为浮点型,(int)(x+y) 把x+y的结果转换为整型。这种方法显然对浮点型数据的精度会有影响,且注意最终输出的形式不同结果也是不同的,若要保留数字...

C语言强制类型转换怎么做?
C语言中的强制类型转换是为了处理不同数据类型之间的运算,以确保运算结果的正确性。以下是如何在代码中实现强制类型转换的步骤:首先,定义两个变量A和B,例如,A设为整型3,B设为整型5。接下来,定义一个目标变量C,用于存储可能需要转换后的结果。在执行除法运算C=A\/B时,如果直接进行,可能会遇到...

请问C语言如何实现数据类型的强制转化?
(type)<expression> 其中,type为类型描述符,如int,float等。<expression>为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如:int nVar=0xab65;char cChar=char (nVar);上述强制类型转换的结果是将整型值0x...

c语言强制类型转换怎么做?
答案:在C语言中,强制类型转换可以通过类型转换符号来实现。具体的格式是:将待转换的变量与类型转换符号结合使用。常用的类型转换符号包括基本类型名称或特定修饰符前缀*。这种操作非常简单直观。强制类型转换可以用于将不同类型的数据转换为同一类型的数据,以进行后续的操作或计算。在编程实践中,这种转换...

c语言中为了精度把int强制转化为什么类型?
填50刚好循环25次 ..sum+=1\/___ 这里填 (float)i 类型不同会发生隐式转换牺牲精度 ..所以使用z(float)i,把int强制转换成float。int main(){ int i=2;float sum=1.0;while(i<=50){ bai sum+=1\/(float)i;i+=2;} printf("sum=%f\\n",sum);return 0;} ...

c语言强制类型转换
1、int a;int b;double c = (double) a;double c = (double) b;int a = (int) c;这就是一种强制转变方法。2、long int c;(int)c;如果C变量是长整型,那么之下的语句就是将长整型转变成为整型的过程。3、()内是要转变的类型,当然相互之间的转变也同时遵循可行性原则。4、强制转变...

c语言中强制类型转化格式
在C语言中,强制类型转换可以使用以下格式:(type_name)expression。type_name是要转换为的目标数据类型,expression是需要进行类型转换的表达式。

相似回答