数据类型与表达式
1.运算符
1.1 自增自减运算符:
int i = 0, j;
j = i++;//后置,i的值自增变为1,表达式i++的值为i自增之前的值,即j得值为0
j = ++i;//前置,i的值自增变为1,表达式i++的值为i自增之后的值,即j得值为1
注意,自增自减运算符的操作对象必须为左值。前置版本返回左值对象本身,后置版本将原始值的副本作为右值返回。能用前置版本就不用后置版本。
1.2 条件运算符:
条件运算符(?:)是唯一一个三目运算符,格式如下:
cond?expr1:expr2
运算过程:计算cond表达式的值,为真则运算expr1,并返回expr1的值;否则运算expr2,并返回expr2的值
2.类型转换
2.1 隐式类型转换:'a'+1,2U+5,int i=3.14
2.2 显示类型转换:
c++提供了四种强制类型转换方式:static_cast,dynamic_cast,const_cast,reinterpret_cast。
格式: cast-name<type> (expr)
早期C++中转换格式:type (expr),(type) expr
例如:double k=i / (double) j; //将j强制转换为double类型
double k=i / double (j);
3.常量修饰符
const修饰符,constexper
4.类型推导
4.1 类型别名:
第一种是使用关键字typedef,例如:typedef long long ll;
第二种是使用using关键字,例如:using price = double;
4.2 auto类型推导:
C++11中auto赋予了新的含义,编译器利用它可以根据初始值的类型自动推导出需要的数据类型。例如:
auto pi=3.14159, rad = 1.0;
auto area = pi*rad*rad; //area为double类型
4.3 decltype关键字:只想用表达式类型而不想用表达式的值来定义对象。
语法格式:decltype (expr)
语句控制结构
1.do while 语句
语法格式:
do {
statement; //循环体语句
}while (expr); //条件表达式,注意以分号结束
do while与while的区别:do while现实性旋幻体后计算表达式,所以不管表达式的值如何,do while语句至少执行一次循环体
2.跳转语句
break语句:只能用于switch语句或循环语句中,用来跳出离他最近的switch语句或终止循环的进行。
continue 语句:只在循环结构中起作用,用来终止当前操作,进入下一次循环,下一次循环是否被执行取决于循环条件是否成立。continue语句的作用域仅作用于离它最近的循环。
C风格字符串处理函数
strlen(s) 返回 s 的长度,不包含结束符'\0'
strcmp(s1,s2) 字符串比较函数。如果s1=s2返回0;s1>s2返回正值;s1<s2返回负值;
strcpy(s1,s2) 字符串复制函数。将字符串s2复制给s1,返回s1。
strcat(s1,s2) 字符串链接函数。将字符串s2附加到s1后,返回s1.
string类型
1.string对象的输入和输出:
cin>>s;时遇到空白字符(空格符,制表符和回车符)停止,如果想读取空白字符,则可以用getline函数。
getline函数读取一整行的输入,知道遇到换行符为止(读入内容包括换行符),并把所有内容放到string对象(不包括换行符)里,例如:getline(cin, s);
2.string 对象的大小:s.size()=s.length() //如果s为指针类型使用 - > 操作符
可用 s.empty() 测试一个string 对象是否为空
3.访问单个字符:下标运算符或者at函数,例如:s[1],s.at(1) 。s.front() 和 s.back() 访问第一个和最后一个字符
4.string 类对象使用C风格字符串处理函数,要通过string类成员函数 c_str 来获取string对象存储的字符串首地址。例如:
string str="hello"
char carr[10];
strcpy(carr, str.c_str());
string的成员函数c_str返回const char* 类型的指针,确保其指向的对象不被修改。
更新中······