数据在内存储存的经典列题
来源:互联网 发布:数据磁带怎么用 编辑:程序博客网 时间:2024/05/21 14:46
第一题:
int main(){ signed char a[1000]; int i = 0; for (i = 0; i < 1000; ++i) { a[i] = -1 - i; } printf("%d", strlen(a)); system("pause"); return 0;}
这道题的运行结果是255。
这里是把从-1到-1000的数存到数组a中,-1存放在内存中是以补码的形式11111111(char类型的8个bit位),再把-2存进数组(补码:11111110),一直到存到-128(补码10000000)。但有符号char类型数据所能表示的最小的数就是-128,当-128再减1时,(10000000+11111111=01111111)最高位就会溢出,-129需要9位才能存储下来,而char类型的只有8位,所以最高位被丢弃,所以减出来的结果是127。
所以实际上这个数组里面存的是-1~-128~127~0,一共存了256个元素,但最后一个是0,也就是‘\0’的assic码值,当strlen遇到它时计数就停止,但0并没有记录进去,所以strlen(a) == 255。
第二题:
下面代码运行起来输出什么?
int main(){ char a = -1; signed char b = -1; unsigned char c = -1; printf("a=%d,b=%d,c=%d", a, b, c); system("pause"); return 0;}
答案:a=-1,b=-1,c=255
c是无符号整型
第三题:
int main(){ char a = -128; printf("%u\n", a); system("pause"); return 0;}
答案:4294967168
这里把一个char类型的数据按unsigned int 输出,会发生整型提升。
阅读全文
1 0
- 数据在内存储存的经典列题
- 数据在内存的存储结构
- 数据在内存中的存储
- 数据在内存中的存储
- 数据在内存中的存储
- 列存储在内存中如何管理
- 获得一个数据在内存中存储的二进制形式
- C语言的各种数据在内存中如何存储?
- c c++中数据在内存的存储
- 浮点型数据在内存中存储的表示
- 浮点型数据在内存中存储的表示[转载]
- 浮点型数据在内存中存储的表示
- c c++中数据在内存的存储
- c c++中数据在内存的存储
- 浮点型数据在内存中存储的表示
- 浮点型数据在内存中存储的表示[转载]
- 浮点型数据在内存中存储的表示
- float类型数据在内存中如何存储的?
- jQuery的事件委托方法on、live、delegate之间有什么区别?
- Android视图控件架构之LayoutInflater
- [2017纪中10-25]嘟噜噜 约瑟夫问题 递推
- IO流--字符流
- JS代码作用域解析
- 数据在内存储存的经典列题
- response.getWriter().write()与out.print()的区别
- CentOS安装Mysql数据库
- UVALive 7040 Color 容斥原理 + 组合数学递推公式 +lucas
- 一次线上问题排查:java.lang.OutOfmemoryError: PermGen Space
- Git用法的全面解析,结合Android Studio来讲Git
- Gson完全教程:基础篇
- 一个完整的地址组成
- 用C、C++进行输入并计算(整数、浮点数)