鱼C论坛

 找回密码
 立即注册
查看: 7911|回复: 21

C字符长度

[复制链接]
发表于 2012-12-22 18:48:07 | 显示全部楼层 |阅读模式
5鱼币
字符串"\\TOP\t\65\"" 的长度是7,请问怎样判断?有什么规律?

最佳答案

查看完整内容

结果确实是7,调试可以发现 ‘\’,‘T’,'O','P','5','"'六个字符,为什么是7呢,看了内存就知道'\6'没有被显示出来,应该是vs不认识吧,用sizeof测试发现是8,为什么是8呢,因为字符串后面还有'\0'嘛,好了,问题搞清楚了。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-12-22 18:48:08 | 显示全部楼层
结果确实是7,调试可以发现 ‘\’,‘T’,'O','P','5','"'六个字符,为什么是7呢,看了内存就知道'\6'没有被显示出来,应该是vs不认识吧,用sizeof测试发现是8,为什么是8呢,因为字符串后面还有'\0'嘛,好了,问题搞清楚了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-22 23:14:05 | 显示全部楼层
字符串常量的表示
(1)普通的字符,比如'A', 'a'
(2)转义字符,以“\”开头的字符,比如'\n'
如果没有对应的转移字符,就不会编译,一起忽略

\\字符'\'
T字符'T'
O字符'O'
P字符'P'
\t制表符
\6一个转义字符(但不能编译)
5字符'5'
\"转移字符"
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-23 15:27:07 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-23 15:31:27 | 显示全部楼层
楼主确定是7个字符吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-23 15:32:13 | 显示全部楼层
我感觉是8个
\\
T
O
P
\t
\65
\
"
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-23 20:22:23 | 显示全部楼层
纯墨迹 发表于 2012-12-23 15:27
有没有 \65 这个字符呢?

是没有'\6'这个字符, \只能和距离它最近的字符, 组合成不能输出在屏幕上的转义字符
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-23 20:30:08 | 显示全部楼层
忘了说, 出现\后, \一定会和后面的那个字符组成转义字符.
比如cout<<"\";    //错误
应该是cout<<"\"";
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-24 16:59:10 | 显示全部楼层
最后一个\一定要加东西,不然没法输出
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-24 20:02:43 | 显示全部楼层
\是转义  总共7个字符
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-24 23:12:43 | 显示全部楼层
Y_H_zhou 发表于 2012-12-23 20:22
是没有'\6'这个字符, \只能和距离它最近的字符, 组合成不能输出在屏幕上的转义字符

:D
哦! 明白了
谢谢啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-26 20:15:36 | 显示全部楼层
应该是这样的把\\TOP\t\65

\\表示输出一个 \
\t 输如一个Tab
\65 好像是A的ASC字符代码把
在加top等于7个字节
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-26 22:18:17 | 显示全部楼层
纯墨迹 发表于 2012-12-23 15:32
我感觉是8个
\\
T

\\是转义字符\
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-26 23:43:04 | 显示全部楼层
听雨欲睡 发表于 2012-12-26 22:18
\\是转义字符\

{:1_1:}了解
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-27 13:19:47 | 显示全部楼层
\是转义字符
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-29 22:47:59 | 显示全部楼层
纯墨迹 发表于 2012-12-24 23:12
哦! 明白了
谢谢啊

共同进步,我学C语言时间也不长。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-10 11:03:32 | 显示全部楼层
Y_H_zhou 发表于 2012-12-22 23:14
字符串常量的表示
(1)普通的字符,比如'A', 'a'
(2)转义字符,以“\”开头的字符,比如'\n'

和我 想得  一样  但是我不明白最后一个\不输出一个字符,而且\6不能编译的话也不输出字符,,那字符串长度不是6了么 。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-11 00:42:04 | 显示全部楼层
小新110 发表于 2012-12-24 20:39
结果确实是7,调试可以发现 ‘\’,‘T’,'O','P','5','"'六个字符,为什么是7呢,看了内存就知道'\6'没 ...

请问,关键字sizeof用来测试类型所占的字节数,而字符串实质是一个指针加上一个'\0',这是8的原因吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-11 09:39:24 | 显示全部楼层
Y_H_zhou 发表于 2013-1-11 00:42
请问,关键字sizeof用来测试类型所占的字节数,而字符串实质是一个指针加上一个'\0',这是8的原因吗?

是的 ,实际上sizeof测试的是这个字符串的内存空间占用多少个字节,而strlen测试的是字符串有多少个,并不包含'\0',所以两者的结果不同。而这个字符串所占的内存为“ '\\','T',‘O’,‘P’,‘\6’,‘5’,‘\0’ ”
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-13 13:17:57 | 显示全部楼层
1 \, 2\T ,3O,  4P,  5\t , 6 \65  ,7\
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-13 18:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表