c++运算符、表达式类与型转换

运算符
表达式
类型转换

1. 运算符

(1)算数运算符

  • 一元运算符︰++、–
  • 二元运算符:+、-、*、1、%
  • 自增、自减运算符
    后置++:先运算再++;
    前置++:先++再运算。
    eg:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int num1,num2=2;
    num1=0;
    cout<<"前置++\n";
    cout<<num1++<<endl;
    cout<<num1<<endl;

    num1=0;
    cout<<"后置++\n";
    cout<<++num1<<endl;
    cout<<num1<<endl;
    return 0;
}

输出:

前置++
0
1
后置++
1
1

eg2:

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int num1,num2=2;
    num1= num2++ - --num2;
    cout << num1 <<"\t" << num2 <<endl;
    return 0;
}

输出:

0       2

num2先–再++,所以输出值是2;
num1=0:因为表达式先计算前置一元运算符,在计算二元运算符,最后计算后置一元运算符。
即:先计算–num2,num2就为1,在计算 num2 - num2=0,即num1就是0,最后在计算num2++,num2就是2。

(2)赋值运算符

  • 单等号
    计算顺序:从右向左
num+=90; //等价于 num=num+90;

(3)关系运算符

  •       >、 <
    
  •      >=、 <=
    
  •      ==、!=
    

c语言中,0表示假,非0表示真。

 cout<<"1<0?\t"<<(1<0)<<endl;
 cout<<"1>0?\t"<<(1>0)<<endl;

输出:

1<0?    0
1>0?    1

c++中引入布尔类型bool:只有true和false

#include <iostream>
using namespace std;
int main()
{
   cout<<boolalpha;
   cout<<"1<0?\t"<<(1<0)<<endl;
   cout<<"1>0?\t"<<(1>0)<<endl;
    return 0;
}

输出:

1<0?    false
1>0?    true

(3)逻辑运算符

运算符表达式说明
与 (&&)条件1&&条件2两个条件同时为真时,结果为真
条件1 或 条件2两个条件有一个为真时,结果为真
非(!)!条件条件为真时,结果为假;条件为假时,结果为真

或:符号是 || .

(4) 位运算符

名称作用
&按位与两个操作数同时为1结果为1
按位或两个操作数只要有一个为1,结果就为1
~ 按位非按位取反
^ 按位异或两个操作数相同,结果为0;不相同结果为1
<<左移右侧空位补0
>>右移左侧空位补0

位:bit

(5)sizeof()

  • sizeof()是一个运算符,不是函数!!
    作用:sizeof():可以计算出变量或类型所占字节大小:
#include <iostream>
using namespace std;
int main()
{
   int a;
   cout<<sizeof(int)<<endl;
   cout<<sizeof(a)<<endl;
   return 0;
}

输出:

4
4

例子:

#include <iostream>
using namespace std;
int main()
{
   int num=5;
   cout<<"numSize="<<sizeof(num++)<<endl;
   cout<<"num="<<num<<endl;
   return 0;
}

输出:

numSize=4
num=5

这里num为什么是5,而不是6能?
由于sizeof()的原因,sizeof只计算括号内变量的大小,而对于括号内变量的运算一概不管,所以num就不会执行++操作。

运算符优先级
单目运算符(!、~、++、–、sizeof())> 算术运算符 > 关系运算符 > && > || > 赋值运算符

2.表达式

符号与操作数的集合。

3.类型转换

(1)自动类型转换
原则︰把表示范围小的类型的值转换到表示范围大的类型的值short -> int -> long -> float -> double

#include <iostream>
using namespace std;
int main()
{
    int num1=5,num2=2;
    double num3=num1/num2;
    cout << num3 <<endl;
    return 0;
}

输出

2

此时num3是double类型的

(2)强制类型转换
可以小转大,也可以大转小
语法∶(类型名)变量或数值

小转大:

#include <iostream>
using namespace std;
int main()
{
    int num1=5,num2=2;
    double num3=(double)num1/num2;
    cout << num3 <<endl;
    return 0;
}

输出:

2.5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值