s1e7动动手的第一题
#include <stdio.h>int main()
{
signed char i;
unsigned char j;
i = 255;
j = 255;
printf("signed char %hhd\n", i);
printf("unsigned char %hhu\n", j);
return 0;
}
1.请问为什么是signed/unsigned char而不是signed/unsigned int?
2.https://fishc.com.cn/thread-67391-1-1.html中的例子
#include <stdio.h>
int main()
{
char c;
int i;
int j;
scanf("%c%d%x", &c, &i, &j);
printf("变量c的值是:%c\n", c);
printf("变量i的值是:%d\n", i);
printf("变量j的值是:%#X(%d)\n", j, j);
return 0;
}
为什么可以直接打印出"A""520""ff"?我对照过ASCII表了也没有找到啊 本帖最后由 超过光速c 于 2021-8-18 10:27 编辑
你的第一个代码的问题:
在C语言中,默认的基础数据类型均为signed(即有符号位类型变量),如定义变量为int, long ,char 等都为有符号的。如果要定义无符号类型,必须显示地在变量类型前面加 unsigned 说明。
char & unsigned char 比较
相同点:内存中都是占一个字节(即8位,2的8次方=256),都能表示256个数字
不同点:char 的最高位为符号位,可以表示的数据范围是 -128 ~ 127; unsigned char 没有符号位,数据的范围是 0 ~ 255
你第一个代码的输出结果应该是 -1和255,-1是因为signed char 类型最大值为127,溢出了。
你的第二个代码的问题:
scanf是输入函数,然后下面三个printf是输出函数
第一个 printf 输出的意思是:输出字符型变量 c 你输入 A,输出就是A
第二个 printf 输出的意思是:输出整型变量 i 你输入的是 520输出的就是 520
第三个 printf 输出的意思是:将整型变量 j 以16进制进行输出 #X的意思是 按16进制 你输入ff(15 15),输出就是 0XFF(255)
然后\n是换行的意思 超过光速c 发表于 2021-8-18 10:14
在C语言中,默认的基础数据类型均为signed(即有符号位类型变量),如定义变量为int, long ,char 等都为 ...
嗯嗯,signed/unsigned 的部分理解了,但是不明白为什么是char而不是int 本帖最后由 超过光速c 于 2021-8-18 10:42 编辑
姜子牙疼 发表于 2021-8-18 10:25
嗯嗯,signed/unsigned 的部分理解了,但是不明白为什么是char而不是int
char 是字符型变量 可以存储数字类型的字符
int 是整型变量,也是可以存储数字类型的字符的
最主观的区别就是 int 可以存储的范围更大,还有计算相关的问题,可以参考下列实例代码。
char 存储的本应该是字符,不能用于就算的,但是编译器内部自动进行了一个强制转换,你看不到。
#include <stdio.h>
int main(){
int a,b;
unsigned char i,j;
a = 255; b= 255; i =255; j =255;
printf("字符型计算:i+j = %c\n",i+j); // 此处是报错
printf("字符型与整型计算:a+i = %d\n",a+i); // 要求的输出类型为 %d 整型 所以,这里对 i 进行了一个强制类型转换,转换为了int型,但是原来 i 的字符类型不会改变,就类似代码 a+i= a+(int)i ;
printf("字符型与整型计算:a+i = %c\n",a+i);// 如果将输出类型 改变为 %c 字符型,就报错了
printf("整型与整型计算:a+b = %d\n",a+b);
}
输出结果:
字符型计算:i+j = �
字符型与整型计算:a+i = 510
字符型与整型计算:a+i = �
整型与整型计算:a+b = 510 姜子牙疼 发表于 2021-8-18 10:25
嗯嗯,signed/unsigned 的部分理解了,但是不明白为什么是char而不是int
你的第一个演示代码 用的 char 类型,只是为了给你演示,让你加以区分 char 的类型的 有符号和无符号位的区别,用的数字字符,更加明显的显示出 有符号位和无符号的数值范围吧。 超过光速c 发表于 2021-8-18 10:39
char 是字符型变量 可以存储数字类型的字符
int 是整型变量,也是可以存储数字类型的字符的
最主观的 ...
哦哦,计算那部分因为没学到所以现在还看不懂,其他的理解了,谢谢{:5_109:} 姜子牙疼 发表于 2021-8-18 10:44
哦哦,计算那部分因为没学到所以现在还看不懂,其他的理解了,谢谢
建议你现在不要死扣数据类型,先记住用就行了,先往下学,理解不要的直接死记多敲代码就行了。
页:
[1]