任何人都可以在MATLAB中给我一些关于fprintf('单引号('')怎么样?\n')的解释?

Hua*_*ang 2 io matlab printf

>> fprintf('How about single quote('')?\n')
How about single quote(')?
Run Code Online (Sandbox Code Playgroud)

输出与:

>> fprintf("How about single quote(\')?\n")
How about single quote(')?
Run Code Online (Sandbox Code Playgroud)

这是更通用的理解(逃避字符由反斜杠'\'和字符(例如'n')组成)

那么,反斜杠('\')是否可以通过单引号(')来改变,以表示MATLAB中的转义字符?

Lui*_*ndo 5

Matlab有char矢量字符串.它们是不同的数据类型.Char向量用单引号(')括起来:

disp('This is a char vector')
Run Code Online (Sandbox Code Playgroud)

而字符串使用double quoutes("):

disp("Hey, I am a string")
Run Code Online (Sandbox Code Playgroud)

要在char向量中引入单引号,或在字符串中引入双引号,请复制它:

disp('Hey, what''s up?')
disp("Say ""Hi""")
Run Code Online (Sandbox Code Playgroud)

在char向量中引入双引号,或在字符串中引入单引号,没有问题:

disp('She said "yes"')
disp("What's the matter?")
Run Code Online (Sandbox Code Playgroud)

当char向量或字符串用作参数时,所有这一切都适用fprintf.此外,Matlab fprintfsprintf 显然是1理解\'为同义词',并且\"是其同义词"; 但复制规则仍然适用.2所以这些是等价的:

fprintf('I don''t like strings\n')
fprintf('I don\''t like strings\n')
Run Code Online (Sandbox Code Playgroud)

就像这些:

fprintf("""Inconceivable!"", he retorted\n")
fprintf("\""Inconceivable!\"", he retorted\n")
Run Code Online (Sandbox Code Playgroud)

fprintf或之外sprintf,\'\"没有那些特殊含义.尝试

disp('\'' \"')
disp("\' \""")
Run Code Online (Sandbox Code Playgroud)

1 我无法找到这个记录.
2 原因可能是模仿C的fprintf行为 ; 但请注意,那里不需要重复.