关于对char类型数据赋予负值的汇编表现

今天在看谭4,看到char的时候,上面有一句话说:可以把0-127之间的整数赋予一个字符变量,那把一个负数赋值给一个字符变量会怎么样呢?

#include<math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
void main()
{
    char c;
	c=-200;
	printf("c1=%c,c2=%d,c3=%x\n",c,c,c);
}


输出:c1=8,c2=56,c3=38;

因为-200的十六进制为FFFFFF38,赋值给c后将38(16进制)给了c,正好是‘8’的ascⅡ码,具体如下图:


movsx为符号扩展。

又如c=-100时,


所以说负数是无法代表一个字符的,但是char型变量可以存储-128-127之间的整数,如果想把255个字符都能表示,那么定义char的时候需要指定为unsigned类型

转载于:https://www.cnblogs.com/JSD1207ZX/p/9386261.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值