大家帮忙编个C语言程序~

来源:百度知道 编辑:UC知道 时间:2024/05/21 06:44:22
3、写一个程序将下列代码添加进去并调试运行:
char c=-1;
signed char s=-1;
unsigned char u=-1;
printf(“c=%d, s=%d, u=%d”, c, s, u);
要求:1)请回答为什么三个数都等于-1但显示结果却不同?
2)无符号型与有符号型有何不同?
3)字符类型char是无符号型还是有符号型?

#include<stdio.h>
int main(void)
{
char c=-1;
signed char s=-1;
unsigned char u=-1;
printf("%d %d %d\n",c,s,u);
return 0;
}

首先要搞清楚一些问题。第一:char默认的是有符号还是无符号,标准并没有说明,具体的
实现是决定在编译器,但你可以去人为的决定为signed或unsigned。第二:char在系统中大
小为1字节,在系统中使用2的补码的方法表示有符号整数,在这种方法中,数字0到127代表它们本身,而数字128到255则代表负数,255代表-1,254代表-2,以此类推。所以255被>解释为有符号时代表-1,而被解释为无符号时,255代表255。
所以,c到底是显示-1还是255,要根据使用的编译器来决定。s绝对是-1,u绝对是255。
第二个问题:无符号就是变量只能表示正数,不能表示负数,有符号可以表示出负数。
地三个问题:char为1字节,到底是有还是无符号,由编译器决定。