我使用Python和C、C++。
当我使用 ' ' 和 " " 时, 有区别吗?
我知道 C 和 C++ 在字符串结束时使用空字符。 所以,我认为他们会有所不同。
前)
// C++
std::cout << ' ';
std::cout << " "; // Does it use 1 more bit?
#Python, I think there is no difference.
print('a')
print("a")
// C
printf("%c", 'b');
printf("%c", "b"); // Does it use 1 more bit?
// C++
std::cout << ' ';
std::cout << " "; // Does it use 1 more bit?
第一个表示发送一个空格字符到
std::cout
。第二个表示将包含空格字符(后跟空终止符)的字符串发送到 std::cout
。效果是一样的。
字符串名义上多用了一个字节,但这是在用于指定程序语义的抽象机中。在实践中,编译器可以将它们优化为相同的代码。
#Python, I think there is no difference.
print('a')
print("a")
在Python中,
'a'
和"a"
都是字符串并且是相同的。使用 '
的字符串和使用 "
的字符串之间的区别在于,如果在由 '
分隔的字符串内使用 '
,则必须用反斜杠“引用”它,如“这是一个撇号” : '.'
,而由 "
分隔的字符串内的 "
必须被“引用”。
// C
printf("%c", 'b');
printf("%c", "b"); // Does it use 1 more bit?
前者调用
printf
打印字符'b'
。
后者不是由 C 标准定义的,因为
%c
告诉 printf
期望作为 int
参数传递的字符值,但 "b"
是一个字符串,它被转换为指向其第一个元素的指针。当 printf
期待 int
时,指针是错误的类型。
C++:字符串
" "
比字符' '
多使用1个字节,因为它包含一个空终止符。打印字符串的函数必须使用一个循环,不断写入字节,直到到达空终止符。打印 char
时不需要循环,它只是将该字节复制到输出缓冲区。
Python:单引号和双引号没有区别,它们都创建字符串。
C:与 C++ 一样,字符串有一个空终止符字节,并且
printf()
必须循环查找终止符。此外,printf()
要求您对字符串和字符使用不同的格式说明符。第二个代码片段应该是
printf("%s", "b");