新手,输出"%"为何要打"%%"而不是"\%",为何这样设定?

木铁柱 2009-12-01 01:37:36
新手,输出"%"为何要打"%%"而不是"\%",为何这样设定?\是转义符啊,应该用\啊。
...全文
237 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 cfoswang 的回复:]
还有,我试了一下,初始化的时候,直接打%也可以,和\%效果是一样的,打%%就会输出%%,这是不是因为%在一般情况下没有特殊意义,只有在printf里作格式控制符?
[/Quote]
说对了,就是这个意思。scanf里面也是格式控制符
bfhtian 2009-12-02
  • 打赏
  • 举报
回复
可以结贴了
zuojunyuan 2009-12-02
  • 打赏
  • 举报
回复
一个是字符串中的%表示,一个是输出的%表示。
木铁柱 2009-12-02
  • 打赏
  • 举报
回复
还有,我试了一下,初始化的时候,直接打%也可以,和\%效果是一样的,打%%就会输出%%,这是不是因为%在一般情况下没有特殊意义,只有在printf里作格式控制符?
木铁柱 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 akirya 的回复:]
引用 3 楼 cfoswang 的回复:
1楼我看的不是很明白,那为何\ ' "要打\\ \' \",而不打%\ %' %",所以打\的话printf能看到啊,不懂。

char xx[]="\r\b\n\%";
单步调试看看xx的值是什么.
[/Quote]
我照你说的单步调试了一下char xx[]="\r\b\n\%"。
请问你这个是给字符串数组赋值是吗?我还没学到这里。
原来是这样,都被一个一个赋值了,这里用\%,而printf用%%。
我想问一下,这个数组要赋四个值啊,为何还多了一个[4]=0 ''
skyworth98 2009-12-01
  • 打赏
  • 举报
回复
\n\t只是让编译器在生成代码的时候用对应的字符替换,%%是让printf处理的

[Quote=引用 2 楼 pur_e 的回复:]
我也有点不太懂,\n\t不也是printf中用的吗
[/Quote]
vbtraz 2009-12-01
  • 打赏
  • 举报
回复
因为scanf不是语言机制,而是一个函数, 它没资格调整\转义的语法, 只能用%转义, 这样才确保它能控制的了
某某9 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 jernymy 的回复:]
引用 16 楼 jenf 的回复:
引用 10 楼 lusure 的回复:
引用 3 楼 cfoswang 的回复:
1楼我看的不是很明白,那为何\ ' "要打\\ \' \",而不打%\ %' %",所以打\的话printf能看到啊,不懂。

打个比方吧,
printf("\%");
编译器编译时,吧"\%"处理为"%",当程序运行时存储在内存里的字符串其实是 "%"
也就是printf()函数在运行时接收到的字符串是"%",而"%"是printf函数作为格式输出的符号,自然无法输出。而"%%"在printf中则可以得到特殊处理。输出"%",这个跟编译器处理"\\"是一个道理。

讲得已经很明白了。


ding
[/Quote]en
Jazzelan 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 jernymy 的回复:]
引用 16 楼 jenf 的回复:
引用 10 楼 lusure 的回复:
引用 3 楼 cfoswang 的回复:
1楼我看的不是很明白,那为何\ ' "要打\\ \' \",而不打%\ %' %",所以打\的话printf能看到啊,不懂。

打个比方吧,
printf("\%");
编译器编译时,吧"\%"处理为"%",当程序运行时存储在内存里的字符串其实是 "%"
也就是printf()函数在运行时接收到的字符串是"%",而"%"是printf函数作为格式输出的符号,自然无法输出。而"%%"在printf中则可以得到特殊处理。输出"%",这个跟编译器处理"\\"是一个道理。

讲得已经很明白了。


ding
[/Quote]

确实!!!!
jernymy 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 jenf 的回复:]
引用 10 楼 lusure 的回复:
引用 3 楼 cfoswang 的回复:
1楼我看的不是很明白,那为何\ ' "要打\\ \' \",而不打%\ %' %",所以打\的话printf能看到啊,不懂。

打个比方吧,
printf("\%");
编译器编译时,吧"\%"处理为"%",当程序运行时存储在内存里的字符串其实是 "%"
也就是printf()函数在运行时接收到的字符串是"%",而"%"是printf函数作为格式输出的符号,自然无法输出。而"%%"在printf中则可以得到特殊处理。输出"%",这个跟编译器处理"\\"是一个道理。

讲得已经很明白了。
[/Quote]

ding
jenf 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lusure 的回复:]
引用 3 楼 cfoswang 的回复:
1楼我看的不是很明白,那为何\ ' "要打\\ \' \",而不打%\ %' %",所以打\的话printf能看到啊,不懂。

打个比方吧,
printf("\%");
编译器编译时,吧"\%"处理为"%",当程序运行时存储在内存里的字符串其实是 "%"
也就是printf()函数在运行时接收到的字符串是"%",而"%"是printf函数作为格式输出的符号,自然无法输出。而"%%"在printf中则可以得到特殊处理。输出"%",这个跟编译器处理"\\"是一个道理。
[/Quote]
讲得已经很明白了。
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 cfoswang 的回复:]
引用 11 楼 akirya 的回复:
引用 3 楼 cfoswang 的回复:
1楼我看的不是很明白,那为何\ ' "要打\\ \' \",而不打%\ %' %",所以打\的话printf能看到啊,不懂。

char xx[]="\r\b\n\%";
单步调试看看xx的值是什么.

大哥你这个应该是错误的吧,char是单字符型的"\r\b\n\%"是四个字符了,会输出错误吧?
[/Quote]
编译下试试再说对不对
z569362161 2009-12-01
  • 打赏
  • 举报
回复
不知道.

还有我只差5分就两个小三角了,能不能给5 分啊!谢谢!
木铁柱 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 akirya 的回复:]
引用 3 楼 cfoswang 的回复:
1楼我看的不是很明白,那为何\ ' "要打\\ \' \",而不打%\ %' %",所以打\的话printf能看到啊,不懂。

char xx[]="\r\b\n\%";
单步调试看看xx的值是什么.
[/Quote]
大哥你这个应该是错误的吧,char是单字符型的"\r\b\n\%"是四个字符了,会输出错误吧?
木铁柱 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lusure 的回复:]
引用 3 楼 cfoswang 的回复:
1楼我看的不是很明白,那为何\ ' "要打\\ \' \",而不打%\ %' %",所以打\的话printf能看到啊,不懂。

打个比方吧,
printf("\%");
编译器编译时,吧"\%"处理为"%",当程序运行时存储在内存里的字符串其实是 "%"
也就是printf()函数在运行时接收到的字符串是"%",而"%"是printf函数作为格式输出的符号,自然无法输出。而"%%"在printf中则可以得到特殊处理。输出"%",这个跟编译器处理"\\"是一个道理。
[/Quote]
大哥你讲解太好了,过来亲一个,ber~~~~~~~~~
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cfoswang 的回复:]
1楼我看的不是很明白,那为何\ ' "要打\\ \' \",而不打%\ %' %",所以打\的话printf能看到啊,不懂。
[/Quote]
char xx[]="\r\b\n\%";
单步调试看看xx的值是什么.
lusure 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cfoswang 的回复:]
1楼我看的不是很明白,那为何\ ' "要打\\ \' \",而不打%\ %' %",所以打\的话printf能看到啊,不懂。
[/Quote]
打个比方吧,
printf("\%");
编译器编译时,吧"\%"处理为"%",当程序运行时存储在内存里的字符串其实是 "%"
也就是printf()函数在运行时接收到的字符串是"%",而"%"是printf函数作为格式输出的符号,自然无法输出。而"%%"在printf中则可以得到特殊处理。输出"%",这个跟编译器处理"\\"是一个道理。
liangyonglou 2009-12-01
  • 打赏
  • 举报
回复
使用'\'是给编译器理解的,%是给printf 使用的,要是使用'\'编译的时候就给转化了,到printf的时候就不认识了!
highball 2009-12-01
  • 打赏
  • 举报
回复
看着个帖子真需要勇气啊
invisibleman0 2009-12-01
  • 打赏
  • 举报
回复
LZ头像太销魂了,解答不了@!!
加载更多回复(6)

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧