社区
C语言
帖子详情
C语言里字符的问题
tom555cat
2012-02-04 09:09:09
char c1;
c1=100011;
printf("%d",c1);
打印结果为-85
c1=1011;
printf("%d",c1);
打印结果为-13
这里-85,-13是什么东西
...全文
128
6
打赏
收藏
C语言里字符的问题
char c1; c1=100011; printf("%d",c1); 打印结果为-85 c1=1011; printf("%d",c1); 打印结果为-13 这里-85,-13是什么东西
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
孤独小剑
2012-02-04
打赏
举报
回复
c1是char而100011和1011都是整形,所以赋值的时候自动舍掉高位只留最后八位的值,你把1011改为1024那c1就是0,赋值1026那c1就是2。
jicongyue123
2012-02-04
打赏
举报
回复
个人理解:我就讲第二个输出为什么会是-13,首先在c语言中1011默认为整型(占四个字节),而c1声明为char(占1个字节),1011的二进制表示为:00000000 00000000 00000011 11110011,当把int型1011赋值给char型c1时,会发生截断,也就是只把最后一个字节赋值给c1即:11110011,这个二进制在计算机里为补码,因为最高位为1,所以表示复数,现在转换成源码为(除最高位,其余取反然后加1)10001101,这个二进制数的最高位为1代表复数,其余7为换算成10进制为13,所以结果为-13.
面包大师
2012-02-04
打赏
举报
回复
1011是十进制,对应的二进制是0000 0000 0000 0000 0000 0011 1111 0011
当你将十进制的1011赋值给char c1时,只是将他的低八位赋值给了c1,即c1的二进制表示就是
1111 0011,当你用%d打印的时候,要打印的十进制,是32位,打印的时候就会把高位补足,补足的方式是重复最高一位1,所以就变成了1111 1111 1111 1111 1111 1111 1111 0011,就变成了-13
-85类似。。。
yunwuxin009
2012-02-04
打赏
举报
回复
范围超了吧
lee_鹿游原
2012-02-04
打赏
举报
回复
[Quote=引用 1 楼 sagegz 的回复:]
char类型的范围是-128~127。在内存中以8位补码形式存放。
1011在内存中是
0000 0011 1111 0011
截断,保留低位
所以在内存中是1111 0011
对应的原码就是-13
前面的类似。
[/Quote]
++
sagegz
2012-02-04
打赏
举报
回复
char类型的范围是-128~127。在内存中以8位补码形式存放。
1011在内存中是
0000 0011 1111 0011
截断,保留低位
所以在内存中是1111 0011
对应的原码就是-13
前面的类似。
C语言
里
scanf读入
字符
串时的小
问题
C语言
里
scanf读入
字符
串时的小
问题
原来对于
字符
指针和
字符
数组的区别很模糊 无意间尝试用scanf读入未初始化的
字符
指针报了段错误 char *str1, *str2; scanf("%s", str1); scanf("%s",str2); 原因:
字符
指针如果没有像这样 char *str1 = "abcdef"//str1指向的是
字符
串常量池的地址 显式地进行初始化 或者没有用malloc分配堆内存空间 则
字符
指针是指向的不确定内存空间(随机值),scanf也就无法进行正常读入,从而造成非法访
关于
C语言
中使用VS2022
里
scanf接收多个
字符
的
问题
是因为新版vs的特点,在接收
字符
时需要在后面加数字,表示要为这个
字符
预留多少内存空间。在新版VS
里
,当使用scanf_s接收多个数据的时候,就会出现下列报错。
C语言
中把
字符
串
里
的部分中文赋值给另一个
字符
串时遇到的
问题
C语言
中把
字符
串
里
的部分中文赋值给另一个
字符
串时遇到的
问题
c语言
里
单引号下的字母,
C语言
单引号内放多个
字符
的
问题
Anordinarycharacterliteralthatcontainsmorethanonec-charisamulticharacterliteral.Amulticharacterliteralhastypeintandimplementation-definedvalue.android代码,frameworks/base/include/m...
c语言
编程显示按键
字符
,
C语言
编程:从键盘输入一个
字符
串,查找指定子串第一次出现的位置。求
问题
补充
里
的程序...
C语言
编程:从键盘输入一个
字符
串,查找指定子串第一次出现的位置。求
问题
补充
里
的程序关注:94答案:3手机版解决时间 2021-03-05 23:16提问者一段小時光2021-03-05 00:46例:输入abcccde,指定子串为cd,则输出为5最佳答案二级知识专家有你才幸福2021-03-05 02:14原理类似于找素数,以下是具体代码(附注释):#include#include#i...
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章