'q'可以正常退出,但"q〃;没有。
有什么区别?
#include <stdio.h>
#include <unistd.h>
int main(){
char c;
while(read(STDIN_FILENO, &c, 1) == 1 && c != "q");
return 0;
}
'q'
是表示单个字符的字符常量。
"q"
是具有字符{ 'q', ' ' }
的类型为char[2]
的字符数组(字符串文字(。
单个字符与类似的字符串文字的比较
c == "q"
或
c != "q"
没有意义,编译器将发出错误消息,因为事实上有一个整数(整数提升后的字符(与一个指针(字符串文字隐式转换为指向其第一个元素的指针后(
With",您创建了一个char[]
,使用',您创建了char
acter。它们很相似,但并不完全相同:字符只是一个介于0和255之间的ASCII值(就像byte
(,char[]
是一个ASCII值字符串,带有某种终止符来告诉代码这是字符串的末尾(在这种情况下是零字符,\0(。你只能在"中放入一个字符,因为它只有1个字符,但可以将任意多个字符放入"中&";,当然,除非RAM用完,因为它是一个数组。
此外,由于你想将它与char类型的变量进行比较,所以它不能是字符串,因为这意味着要比较不同的类型(据我所知,数组/string/char[]
/几乎是一个指针,比较内存地址和字符变量在那一刻有点奇怪(,但你可以使用myCharArray[0]
,因为这样你就可以获得数组的第一项,这是一个CCD_ 11演员。
'c'是一个字符"c";是包含字符c和"\0"的字符串