社区
C语言
帖子详情
问个char和int关系的问题
benbshmily
2009-11-03 11:08:28
char ch = 0;
int i = -1;
ch = i;
printf("%d, ",ch);
结果是-1
i是4字节,ch是1字节。我想知道i是怎么把这个-1赋值给ch的。内存中的i保存的是-1的补码呀。赋值结果ch应该是255才对啊。
不解。
同时,sizeof(++i);后为啥i的值不会自加1;
有了答案马上结贴。谢谢各位。
...全文
90
11
打赏
收藏
问个char和int关系的问题
char ch = 0; int i = -1; ch = i; printf("%d, ",ch); 结果是-1 i是4字节,ch是1字节。我想知道i是怎么把这个-1赋值给ch的。内存中的i保存的是-1的补码呀。赋值结果ch应该是255才对啊。 不解。 同时,sizeof(++i);后为啥i的值不会自加1; 有了答案马上结贴。谢谢各位。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
selooloo
2009-11-03
打赏
举报
回复
ch是 11111111
因为char 属于有符号数,首位符号位是负数,减1,取反就是它的值,就是-1;
如果这样定义 unsigned char ch;
printf("%d, ",ch); 就是255
benbshmily
2009-11-03
打赏
举报
回复
哦,明白了。ch其实是保存的i的最低字节。11111111.我是%d有符号型打印,所以是-1.昏。谢谢各位。
满意结贴
cnStreamlet
2009-11-03
打赏
举报
回复
第一个问题,ch 就是 255,无符号的 255 就是有符号的 -1 么
LZ 既然知道内存中保存的是 -1 的补码,为何反而怀疑 -1 的补码不是 -1 呢?
pengzhixi
2009-11-03
打赏
举报
回复
sizeof是不关心表达式的结果,它只关心类型
morilasi
2009-11-03
打赏
举报
回复
sizeof(++i)
在编译期间计算。比如cout<<sizeof(i)
你会发现编译出的汇编代码跟cout<<4是一样的
Eveilei
2009-11-03
打赏
举报
回复
第一个问题,不解。
pengzhixi
2009-11-03
打赏
举报
回复
sizeof 是不会帮你计算的。
jzd8000
2009-11-03
打赏
举报
回复
sizeof(++i)
算的还是i这个整形变量的大小,当然不变。
数据保存在内存里,你可以认为它是不分类型,
你printf什么类型的,他就按你指定的类型把数据显示出来。
cattycat
2009-11-03
打赏
举报
回复
%d输出时,按有符号,最高位1表示负号。
lihan6415151528
2009-11-03
打赏
举报
回复
只是把首地址给了ch了
s_rlzheng
2009-11-03
打赏
举报
回复
你用printf("%c ", ch);就可以输出255的字符了。
因为你用了%d,所以打印出来的当然是整型啦,也就是-1。
sizeof是不计算里面的,当然不会自加1啦。
跟汤老师学Java(第2季):变量和数据类型
本课程从零开始,以通俗易懂的方式讲解Java入门,手把手教你掌握每一个知识点。 课程中使用的所有英文单词都会逐一查询并记录,真正做到零基础入门学习,...类型转换 5.
char
和
int
之间的转换 6.使用Scanner获取用户输入
char
与
int
之间的
关系
其实
char
和
int
这些数据类型没有区别,只有大小范围的差异,
char
可以和
int
之间相互转换。在内存中
int
可以表示出
char
的字符,
char
也可以和
int
进行运算。
char
a = '1';
char
b = 49;
int
c = 49; pr
int
f("%c %d\n...
char
和
int
之间转换 C语言
char
类型直接转换成
int
类型对应的是ASCii码对应的十进制数值,阿拉伯数字字符对应的十进制数与字符的
关系
满足:i =
int
( ch )-48
int
类型转换成
char
类型
int
类型转换成
char
类型需找到阿拉伯数字字符对应的十进制数...
字符型
char
和整型
int
之间的
关系
在C语言中并没有
char
类型的常量(但是在C++中却有,字符常量都是
char
类型),其实是用
int
表示
char
,字符型与整型相比只是更加节省内存。(在所有数据类型中,
char
类型占用的内存空间最少) 有符号的字符表示-128~127...
C语言字符型
char
和整型
int
的
关系
和示例
可以给
char
变量一个字符,也可以给它一个整数;反过来,可以给
int
变量一个整数,也可以给它一个字符。
char
变量在内存中存储的是字符对应的 ASCII 码值。如果以 %c 输出,会根据 ASCII码表转换成对应的字符,如果...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章