没有合适的资源?快使用搜索试试~ 我知道了~
首页字符截取与整型理解:sizeof vs strlen在C语言中的差异
字符截取与整型理解:sizeof vs strlen在C语言中的差异
0 下载量 189 浏览量
更新于2024-08-03
收藏 965KB PDF 举报
本资源主要讲解C++中的整型提升以及字符截取的相关概念,特别关注了strlen函数与sizeof的区别。`strlen`函数用于计算字符串(不包括`\0`终止符)的长度,它只统计字符数组中的实际字符数量,而`sizeof`操作符会返回整个字符数组(包括`\0`)的字节数,所以两者的结果在长度上存在差异,一个少一个字节。 在讨论整数表示时,提到了数值10000000000000000000000000000001与循环次数和打印值的关系,强调它们并不相关,可能是用来展示某种算法或数据结构的示例,与字符截取主题有一定关联。 关于字符数组和整型转换,例如将int数组存储到char指针中,这部分内容可能涉及到内存管理和类型转换。通过指针解引用,由于char类型只有8比特位,最大可存储的ASCII码是255,因此对于负数,例如-255到-256,其二进制表示会占用9位,其中包括补码表示方式。这里详细解释了不同数值的二进制、反码和补码形式,强调了补码在计算机存储和运算中的作用,特别是对于负数的表示。 这份笔记深入剖析了C++中字符处理、字符串长度计算以及整型数值表示的细节,对理解和应用这些概念具有重要参考价值。
资源详情
资源推荐
用strlen函数计算的字符串遇到‘\0’则停止,计算了' '前面所有字符的大小,而sizeof则是
把' '也包含在了里面,因此比strlen函数计算的多出了一个字节的大小
10000000000000000000000000000001
和你循环多少次打印什么值没有关系
把int数组型存到一个char指针里面
char *str=&a
返回一个长度
原码
反码 111111111111111111111111111110
补码 1111111111111111111111111111111
十六进制0xFFFFFFFF你会发现这条路走不了
Signed char类型范围-127———128——决定值为255
-127二进制:
1111,1111,1111,1111,1111,111111111111111111111111111111111111,1000,0001
128二进制1000,0000
255二进制1111, 1111
256二进制0001,0000,0000(可以看成9位)
你会发现这道题就在讲一个事,求'\0'之前有多少个字符。
明白了这个问题,你就可以看出char型(8比特位)指针去解引用,最多解到255,
-255——1111,1111111111111111111111111111111111111111111111111111,0000,0001
反码——1000,00000000000000000000000000000000000000000000000000000, 1111,1110
补码——1000,0000000000000000000000000000000000000000000000,1111, 1111
-256——1111,1111111111111111111111111111111111111111111111111111,0000,0000
反码——1000, 0000000000000000000000000000000000000000000000000000,1111,1111
补码—1000,0000000000000000000000000000000000000000000000, 0000, 0000
-256补码比-255多一位,(2^8-1=255)255是八比特位中最大的。
因为你存的是补码,也是补码在运算和截取
真相就在这里,懂吗?