关于对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Ⅱ码,具体如下图:

关于对char类型数据赋予负值的汇编表现详解编程语言

movsx为符号扩展。

又如c=-100时,

关于对char类型数据赋予负值的汇编表现详解编程语言

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

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/17717.html

(0)
上一篇 2021年7月19日 20:27
下一篇 2021年7月19日 20:27

相关推荐

发表回复

登录后才能评论