单引号与双引号
单引号:字符型
双引号:字符串型
- 单引号引起的一个字符实际上代表一个整数(Ascll码)。
#include<iostream>
using namespace std;
int main(){
char a='c';
int b;
b=a;
cout<<b;
}
输出结果:
- 双引号引起的字符串,代表的却是一个指向无名数组起始字符的指针。该数组会被双引号之间的字符以及一个额外的二进制为零的字符 ‘\0’ 初始化。
例如:
“a"和’a’的区别,前者是字符串,后者是字符。
实际上 ”a” 是 “a\0”,以’\0’结尾。而‘a’单单表示a这个字符。
字符串可以是"abcde"这样的表示多个字符的一个组合,但是’abcde’这样就是错误的!!!
两者的联系:
char str[] = “abc”;
在这段代码中,str是一个char型数组,里面含有三个字符’a’,‘b’,‘c’,可以理解为string,但是在一些用法上有细微差别。
字面量
定义
字符串字面量(stringliteral)是指双引号引住的一系列字符,双引号中可以没有字符,可以只有一个字符,也可以有很多个字符
理解
“af”=="bbb"这种写法是什么意思?
该式中"af"与"bbb"的字面量不同,所以在判断返回false,反之如果是相同的话返回true
该种用法可以理解为
int func()
{ return 1==2; } //错误返回false
EOF 、false、ture
- EOF== -1
C标准函数库中表示文件结束符(end of file) - false==0
- ture==1
false/true是bool类型
strcmp()函数
int strcmp(const char *str1, const char *str2)
函数库:string.h
- str1 – 要进行比较的第一个字符串。
- str2 – 要进行比较的第二个字符串。
该函数返回值如下:
如果返回值小于 0,则表示 str1 小于 str2
如果返回值大于 0,则表示 str1 大于 str2
如果返回值等于 0,则表示 str1 等于 str2
应用:
#include <string.h>
int main ()
{
char str1[15];
char str2[15];
int ret;
strcpy(str1, "abcdef");
strcpy(str2, "ABCDEF");
ret = strcmp(str1, str2);
if(ret < 0)
{
printf("str1 小于 str2");
}
else if(ret > 0)
{
printf("str1 大于 str2");
}
else
{
printf("str1 等于 str2");
}
return(0);
}