char a;a=266;printf("%d",a);为什么结果是10,怎么个转换方式?

如题所述

因为超出了char类型的范围,char最大值为0xFF,也就是256,你比256多出了10,所以输出结果为10。想输出266,就换个范围更大的数据类型,比如int。追问

为什么char最大值为0xFF?char不是字符型吗?

追答

其实我说快了说错了,0xFF是255,无符号的char范围是0-255。不管有无符号,char只占一个字节,00-FF。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-05
char a=256?一个字符你给个初值256?查一下ASCII表,看看是啥?一个char占一个字节,就是8位二进制!256怎么用2进制表示?255的二进制11111111,哪256是啥呀?溢出啦吧?
第2个回答  2013-10-04
有求助我愿意扩散!

c语言打印问题 求助大佬
(char)a的意思就是截取变量a的第一字节,而变量a的值是266,它的前两个高字节都是0,第2字节是256,第1字节是10,输出当然是10。详细分析就是:266的16进制表示是 0x00 00 01 0a,2进制表示是00000000 00000000 00000001 00001010,它的第一字节是0a或00001010,转换成10进制后都是10,输出自然...

c语言中声明和printf输出不一致,比如声明的是int,输出的是float,为什...
C语言中声明的变量类型和printf输出类型没有直接联系,可以相互转换的。比如说,定义 char a='a'; printf("%d",a);输出的就是a的ASCII码值,printf("%c",a);输出的就是字符a

...a=prin(); printf("%d",a); 输出结果为什么是10
{ int a ;a=prin();printf("%d",a);} 输出的结果确实是10,你有这个疑问,说明你对printf函数不太熟悉,printf函数的原型是:int printf(const char *format,[argument]);也就是说printf函数会返回一个int类型的数据,那么这个int类型的数据的意义是什么呢? 他的意义就是printf实际输出的字符的...

c语言,定义char a=222,;输出printf(“%d”,a);为什么是-34,从字符型变...
char a=222时。 编译器在内存中开辟了一个字节的空间,并存为 1101 1110.然后,你将a以整型打印的时候,要知道,你先将这块区域定义成了字符型,也就是它是一个带符号的整型,取值范围为-128~127。1101 1110表示一个负数,它的值是符号位不变,其他位取反再加1 1101 1110---> 1010 0001 -...

char a=255;printf("%d\\n",a),为什么输出是-1
首先,char的表达范围是[-128,+127],因此你给出的初始化value已经越界了;其次,255的值也就是0xFF,因此char中存储这个0xFF,那么最高位1代表符号为,一定是负数;所以最终按照%d打印的话,转换过来也就是-1

已知union
这个涉及到硬件,不知道你有没有相关的知识储备 这是共用体,你先为i赋值了266,两个字节 在内存中的存储状态是 0000 0001 0000 1010 但是你现在输出的是ch 这个只占1个字节 在内存中,低字节在前,所以输出的是 0000 1010 里的内容,所以是10 ...

C语言共用体问题!~在线等
Endian),int一般也是32位的,266 16进制为10A,内存中存储为0A010000, 所以打印结果是10(内存中第一个char 0A的十进制数字)。在某些硬件上CPU采用高位在前(Big Endian),32位的话266表示为0000010A,打印出来将是0.如果这个硬件的int类型是16bit的话(理论上存在这种可能),打印出来将是1....

若定义char a='A',则执行printf("%d",a),屏幕显示
若定义char a='A',则执行printf("%d",a),屏幕显示 65 C语言中,字符型数据和___数据可以通用。整型 输出整型数据长度为10的格式化字符串是 10d 输出浮点数长度为8,小数位长度为2的格式化字符串是 8.2f 若a是int型变量,则执行a=25\/3,a的值为 8 若定义int a=5,则执行a*=5,a的值...

在c语言中,char a='A'; printf ("%d%o", a = a + 1 , a + 'a...
原因是,如果一个函数有多个参数,比如 int fun (int a, int b, int c);调用时,总是从最后一个参数开始压栈。 也就是c先进栈,其次是b,最后才是a。同理, 如果你这样写:int main (){ int i = 0;printf ("%d,%d,%d",++i,++i,++i);} 先计算最后一个参数(即最右一个++i),...

设有说明语句:char a= '\\020';则语句printf(“%d”,a);的输出值是
'\\020' 这个是8进制 换成10进制 2*8 = 16 输出16。

相似回答