计算机c语言中 char x=0xFFFF; printf("%d\n",x--); 结果是多少

如题所述

char应该用%c格式输出,但是ASC码没有定义到0xFFFF这个位置
或者类型改为int,x=65535,输出65534

一定要如题输出的话是-1追问

什么意思

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-03-17
应该是255吧 x是char 赋值之后是255 x--是先操作 再减一

main(){ char x=0xFFFF; printf("%d ",x--); }
计算机c语言中 char x=0xFFFF; printf("%d\\n",x--); 结果是多少 char应该用%c格式输出,但是ASC码没有定义到0xFFFF这个位置 或者型别改为int,x=65535,输出65534 一定要如题输出的话是-1 main() { int x; scanf("%d",&x); if(x++>5) printf("%d\\n",x); else printf(...

c语言这段码为何会输出-1?
1. char x=0xFFFF;指定值超出char表示的范围,因此高位数据被丢失,得到x=0xFF;2. printf("%d\\n", x--);这句在这里可以理解为:printf("%d\\n", x);和x=x-1;两条语句 在执行printf时会对x进行符号扩展【char表示有符号数据,所以会进行符号位扩展】,因为x的符号位为1,所以整个数据扩...

C语言 char x=0xFFFF 代表什么??
0xFFFF,是16进制的 FFFF, 转化成二进制就是 1111 1111 1111 1111(2 * 8 = 16 位,2字节)但是因为char型只占用1个字节,所以也就只有有效的0xff,并且因为是默认有符号数的,所以最高位1表示负数,剩下的就是-1了,根据补码定的规则0xFF是十进制-1....

C语言 题目
结果是-1。char x=0xddff; 最前面0x表示后面的数是十六进制。ddff是两个字节的一个数。而x是字符类型char,只能存储一个字节。按照微机原理,x存储了低位的ff,而最后打印出来的是%d,就是将x转化为整数类型,因为整数类型是两字节,所以x=0xffff。0xffff=-1,最后输出-1 ff 到 -1 怎么算 应该...

c语言中输入一个char型的0xFFFF和直接定义char x 0xFFFF,
输入一个char型的0xFFFF和直接定义char x 0xFFFF,在C语言中的表现方式和结果是不同的。当在第一个程序中将0xFFFF赋值给char型变量x后,x的值会自动转化为-1。这是因为在编译阶段,0xFFFF会被截取为(char)(-1)。但需要注意的是,这种方式可能会引发“窄边转化”的警告。为了程序的安全性和可读性...

C语言中,无符号位长整型的溢出问题
在C语言层次上来说的话的确是忽略溢出部分而只保留余数 在更低级的层次上来讲,忽略的那个进位被保存到标志寄存器CF位上了 比如 unsigned int x=0xffffffff,y=1;printf("%d\\n",x+y);得到的结果是0

C语言中 int x=oxffff; printf("%u\\n",x) x的值
应当用 0xffff 第一个是数字0 不是 字母 o u是按 10进制 无符号 整型 输出数值。0xffff 得 65535

关于c语言的问题
这是关于计算机原码,反码,补码的问题 计算机中,正数用原码表示,负数用补码表示(即反码+1,也是原码按位取反+1)。已知一负数补码,求其相对应正数原码的方法是:把其补码取反加1 x有16位,首位为1,是负数。把其补码取反加+1,得1。故0xffff是-1(0x表示十六进制数)...

C语言的问题
0xFFFF是十六进制,转换为二进制为1111 1111 1111 1111,第一位是符号位,由于第一位是1,故为负数,根据负数补码取反加一的编码原则,故原码为0000 0000 0000 0000+1=0000 0000 0000 0001,所以输出-1

C语言中0xFFFF表示什么
0XFFFF如果代表一个unsigned int 数据 那么它的值就是 4 294 967 295也就是 无符号整型所能表示的最大值。 0XFFFF如果代表一个signed int 数据 那么它的最左边的一位是1,即它必定是一 个负数。这个值是-1。0X FFFF如果是一个有符号的数字,因为它的最高位是1,所以这个数是个负数。简单的 ...

相似回答