c语言中整数赋值和字符赋值的一些问题
来源:互联网 发布:基于python.的毕业设计 编辑:程序博客网 时间:2024/05/18 11:32
int i=289 char c='a'; c=i;这个问题,因为char是一个8位的存贮结构,你把一个16位的int的结构赋值给了它,结果只能是把高位的丢掉,所以i被减了256以后赋值给了c,即低位部分赋值给了c你在c='a'时,c存的是97但你后来把i也就是289给了c,所以值溢出了,(为什么这里i被剪掉的是256呢,这个256是怎么算出来的?)
补充:289是10进制 转换到8进制是0000 0441 二进制是100100001 高8位丢掉 也就是 0441 (不明白256咋来的)
回答:这个计算方法不对,289的8进制是04 41二进制是100100001 ,而十六进制为01 21
高8位丢掉不是0441,而是 41,二进制为00100001,而十六进制为21
你把8进制的高8位算错了,它是二进制的高8位,这样就是相当于剪掉了256
追问:嗯,我不太明白低位高位怎么划分 16进制 10进制 8进制 的高位低位(栗子:16进制10 00;10进制40 96;8进制10000 2进制 1000000000000; 16进制和10进制的都是4位 高位低位是前2和后2,8进制是5位 而2进制是9位 怎么区分高位低位?补零么?)
(还有)因为char是一个8位的存贮结构,你把一个16位的int的结构赋值给了它, (这句这里指的8位的存贮结构和16位的存贮结构我不太明白指的是什么)。
补充:在计算机中,实际存储的都是二进制(其它进制都是为了方便人看的)。
所以低高位都是指二进制。
八进制现在很少用了。
而十六进制因为能方便对应二进制就以较常用,二进制的8位正好是它的一位(0~F)。
而十进制是我们实际生活中用的,二进制高8位就对应256(低位的0~7对应的是0~255)。
另外,二进制的位置是从右往左数的,计数从0开始,所以左边的是高位而右边的是低位。
对一个二个字节的类型来说,0~7是低8位,8~15是高8位。
对C语言来说,一个char类型,它只有一个字节,也就是8位。
而int对不同的系统或平台,长度一般是不同的,目前的系统,一般的int为32位(而非16位,16位是古老的系统上用的),所以你说的16位int,估计是你的教材太古老了,至少是20年前的。
C语言有隐式转换,它可以把一个int赋给char,但会自动截断,只留8位。
补充:上面说错了一点,二进制的8位正好是十六进制的二位(00~FF)。
补充:289是10进制 转换到8进制是0000 0441 二进制是100100001 高8位丢掉 也就是 0441 (不明白256咋来的)
回答:这个计算方法不对,289的8进制是04 41二进制是100100001 ,而十六进制为01 21
高8位丢掉不是0441,而是 41,二进制为00100001,而十六进制为21
你把8进制的高8位算错了,它是二进制的高8位,这样就是相当于剪掉了256
追问:嗯,我不太明白低位高位怎么划分 16进制 10进制 8进制 的高位低位(栗子:16进制10 00;10进制40 96;8进制10000 2进制 1000000000000; 16进制和10进制的都是4位 高位低位是前2和后2,8进制是5位 而2进制是9位 怎么区分高位低位?补零么?)
(还有)因为char是一个8位的存贮结构,你把一个16位的int的结构赋值给了它, (这句这里指的8位的存贮结构和16位的存贮结构我不太明白指的是什么)。
补充:在计算机中,实际存储的都是二进制(其它进制都是为了方便人看的)。
所以低高位都是指二进制。
八进制现在很少用了。
而十六进制因为能方便对应二进制就以较常用,二进制的8位正好是它的一位(0~F)。
而十进制是我们实际生活中用的,二进制高8位就对应256(低位的0~7对应的是0~255)。
另外,二进制的位置是从右往左数的,计数从0开始,所以左边的是高位而右边的是低位。
对一个二个字节的类型来说,0~7是低8位,8~15是高8位。
对C语言来说,一个char类型,它只有一个字节,也就是8位。
而int对不同的系统或平台,长度一般是不同的,目前的系统,一般的int为32位(而非16位,16位是古老的系统上用的),所以你说的16位int,估计是你的教材太古老了,至少是20年前的。
C语言有隐式转换,它可以把一个int赋给char,但会自动截断,只留8位。
补充:上面说错了一点,二进制的8位正好是十六进制的二位(00~FF)。
0 0
- c语言中整数赋值和字符赋值的一些问题
- C语言字符指针赋值的问题
- c语言中,字符数组与字符串赋值问题
- C语言字符数组的赋值问题及比较
- [C语言]给一个二维字符数组赋值的问题
- C语言中字符数组赋值方法
- C语言中字符数组的初始化与赋值
- c语言二维字符数组的初始化和赋值
- 关于c语言中变量赋值问题
- 关于c语言中变量赋值问题
- C语言中结构体赋值问题的讨论
- C语言中结构体赋值问题的讨论
- C语言的位域赋值问题
- C语言指针的赋值问题
- C语言中enum的赋值
- C语言中,字符串的赋值
- C语言中全局变量赋值的陷阱
- 初始化和赋值的一些问题
- js根据日期等生成时间戳
- oracle数据库的一个表中,怎么设置字段的默认值
- 网络基础总结之找工作阶段
- 了解大数据动态
- Leetcode 7. Reverse Integer
- c语言中整数赋值和字符赋值的一些问题
- 颜色代码大全 - RGB颜色查询对照表
- M1非接触式IC卡性能简介
- spring3,struts2,hibernate,junit,设计模式视频教程下载
- LeetCode 8String to Integer (atoi)
- 喧闹过后,谁是王者?餐饮O2O的四种模式大盘点
- 自动化邮件报告平台-邮件发送highchart图表
- 从 iOS 应用扩展谈起
- 云服务器安装LNMP