回答
因为%
由printf
处理。这不是C中的特殊字符,但printf
本身对待它的方式不同。
反斜杠由编译器在解释程序的源文本时处理。所以常见的结果是源文本"\%"
产生一个包含“%”的字符串。
格式字符串由printf
例程解释,因此它会处理传递给它的字符。到目前为止,反斜杠不再存在,所以printf
从来没有看到它。
从技术上讲,\%
在字符串文字中不合法。字符\
开始一个转义序列,并唯一合法转义序列在C中所列2011 6.4.4.4 1.他们是\
其次是'
,"
,?
,\
,a
,b
,f
,n
,r
,t
,v
,一到三个八进制数字,x
和十六进制数字,u
和四个十六进制数字,或U
和八个十六进制数字。
如果printf
已被设计成一个反斜杠会逃出%,那么你就必须通过转义源文本反斜杠传递给它一个反斜杠,所以你会写:
printf("\\%");
+1来仔细地写下“x和十六进制数字”http:// stackoverflow。com/questions/5784969/when-did-c-compilers-start-consideration-more-two-hex-digits-in-string-lite – chux
惯例是特殊字符自己逃脱。因此,它不是使用反斜杠来逃避百分比,而是逃避自己。 (请注意,要将反斜杠传递到printf
,您必须将字符串文字写为"\\%"
。)
由编译器和'%'通过printf使用的约定是那些角色逃脱了自己。字符串文字和字符中的约定是反斜杠用于转义结尾分隔符。就我个人而言,我认为最好将转义字符的转义表示形式表示为该字符后面跟着特定的*其他*;并避免使其看起来像其他事物一样,但将加倍转义字符和前面的东西(如带有转义引号的引号)(而不是像使用'\ q'作为转义引用)这样的想法看起来很常见。 – supercat
在字符串和字符文字中这也适用,反斜杠是元字符,并且它自己逃脱;在大多数语言中,引号字符不会自行逃脱,而是使用反斜杠。我认为你同意我的观点?有一些奇怪的方案使用双引号来表示文字引号(UTR35作为一个例子来思考,这是一个真正的噩梦)。 –
将元字符加倍以表示自己是一种常见模式,但除了受欢迎程度之外,我不知道它有任何真正的优势,因为它意味着无法知道某个特定字符的含义,而不能看到任意数量的字符它。把'\'的转义表示成'\!'将避免含糊不清似乎以'\\\\\\\''结尾的字符串[引号是否是字符串的转义部分? ]其他语言使用一些不同的方法,虽然有时它们会产生他们自己的歧义(例如.NET格式字符串)。 – supercat
您可以这样做!!!!!
#include <iostream>
#include <string>
#include "stdio.h"
using namespace std;
int main(int argc, char **argv)
{
printf("hhhhhhh %s \n","\%");
printf("hhhhhhh \n");
return 0;
}
的问题printf的存在,从您使用编译器.. 随着wxWidget不同LIB你不能有两个转义序列
printf(" xxxxxx \0x81 xx \0x82 xx \n");
唐吨去用printf。但如果你使用
printf(" xxxxxx %s xx %s \n","\0x81","\0x82");
你是对的。 A plus
- 1. 为什么不能使用插值运算符时反斜杠用于转义百分比字符
- 2. 历史上,为什么反斜线(\)是转义字符?
- 3. 获取反斜线未转义字符
- 4. 在C#中使用反斜线符号转义的Unicode字符串
- 5. 转义字符串双引号不用反斜线用C#在Visual Studio
- 6. 为什么PyCharm使用双反斜线来指示转义?
- 7. 为什么msyqli_real_escape_string()不能正确地转义多个反斜杠?
- 8. 转义反斜线在PostgreSQL
- 9. 如何在python中不转义反斜线转义的字符串?
- 10. 将JS反斜杠转义字符转换为不转义字符Shift JIS
- 11. 为什么内容不在百分比
- 12. 为什么反斜线(\)在字符串给错误控制台
- 13. 的preg_match():分隔符不能是字母,数字或反斜线
- 14. 的preg_replace():分隔符不能是字母,数字或反斜线
- 15. c#如何使用反斜杠拆分字符串(双斜线不起作用)
- 16. 为什么在百分比符号中使用不同的分隔符?
- 17. 如何反转字体百分比
- 18. 在Ansible剧本中转义反斜线
- 19. Python的转义反斜线
- 20. C++ - 在字符串上转义或禁用反斜杠
- 21. 如何让反斜杠字符不能转义
- 22. 不能保持反斜线在字符串中的Ruby代码
- 23. C#替换反斜线JSON字符串
- 24. NSPredicate转义反斜杠字符
- 25. 斜线反斜杠,日期字段中的连字符有什么区别?
- 26. 在Objective-C中的URL字符串转义表示? (“编码百分比”)
- 27. 从LDAP路径(C#)中删除反斜杠转义字符
- 28. 我不明白为什么反斜线在使用PHP代码
- 29. 的Javascript的Unicode中转义反斜线
- 30. 中转义反斜线Postgres里
查看此链接了解更多信息; http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.cmds/doc/aixcmds4/printf.htm – JNL
这只是printf的方式。我宁愿使用这个参考文献http://www.cplusplus.com/reference/cstdio/printf/ – GreenScape