|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #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是换行的意思
|
|