‘ ’和“ ”在资源使用上有区别吗?

问题描述 投票:0回答:2

我使用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?
python c++ c string character
2个回答
0
投票
// 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
时,指针是错误的类型。


0
投票
  • C++:字符串

    " "
    比字符
    ' '
    多使用1个字节,因为它包含一个空终止符。打印字符串的函数必须使用一个循环,不断写入字节,直到到达空终止符。打印
    char
    时不需要循环,它只是将该字节复制到输出缓冲区。

  • Python:单引号和双引号没有区别,它们都创建字符串。

  • C:与 C++ 一样,字符串有一个空终止符字节,并且

    printf()
    必须循环查找终止符。此外,
    printf()
    要求您对字符串和字符使用不同的格式说明符。第二个代码片段应该是

printf("%s", "b"); 
© www.soinside.com 2019 - 2024. All rights reserved.