ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++运算符

2021-09-21 14:58:52  阅读:157  来源: 互联网

标签:0000 cout int C++ 运算符 main 表达式


一.算术运算符

1. 基本四则运算符:加减乘除模(+ - * / %)

int a = 20;
int b = 10;
cout<< a + b <<endl; // 30
cout<< a - b <<endl; // 10
cout<< a * b <<endl; // 200
cout<< a / b <<endl; // 2
cout<< a % b <<endl; // 0 --->模运算相当于数学中除法的余数

    注意: 都是二元运算符,使用时必须要有左右两个操作数

                int / int 结果还是int类型,而且向下取整

int a = 3;
int b = 2;
// 在数学中应该是1.5 但是在C++中输出结果为1 会向下取整,即小数点之后全部舍弃掉了
cout<< a / b <<endl;

                做除法和取模时,右操作数不能为0

                两侧操作数类型不一致时,向类型大的提升

cout<< 1 + 0.2 << endl; // +的左侧是int,右侧是double,在加之前int被提升为double
                        // 故:输出1.2

2. 增量运算符 += -= *= %=            (只适用于变量)

int a = 1;
a += 2; // 相当于 a = a + 2
cout << a <<endl; // 输出3
a -= 1; // 相当于 a = a - 1
cout << a <<endl; // 输出2
a *= 3; // 相当于 a = a * 3
cout << a <<endl; // 输出6
a /= 3; // 相当于 a = a / 3
cout << a <<endl; // 输出2
a %= 3; // 相当于 a = a % 2
cout << a <<endl; // 输出2

3. 自增/自减运算符 ++ --

    ++是给变量的值+1,--是给变量的值-1。

int a = 12;
	int b = 0;
	b = a++;//b=12 a=13 先使用,后加一
	b = ++a;//b=14 a=14 先加一,后使用

     // --操作符给操作-1,与++含义类似

注:如果单独使用,【前置++】和【后置++】没有任何区别,都是给变量加一

       只有变量才能使用自增/自减运算符,常量不能使用,因为常量不允许被修改

      (a+b)++不合法

int main()
{
 int i = 3;
 cout << i++ + i++ + i++ << endl; // 可读性太差
 cout << i << endl;
 return 0;
}
打印9,结束后i的值为6

二. 关系运算符      =表示赋值,==表示相等

关系运算符主要有六个: == != < > <= >= ,其计算结果是 true 或者 false 。

int main()
{
 int a = 10;
 int b = 20;
 // 注意:在C++中 = 表示赋值,要与数学中的含义区分
 // 在C++中 == 表示相等
 cout << (a == b) << endl; // 0
 cout << (a != b) << endl; // 1
 cout << (a < b) << endl; // 1
 cout << (a > b) << endl; // 0
 cout << (a <= b) << endl; // 1
 cout << (a >= b) << endl; // 0 
 return 0;
}

注:count<<5<a<15<<endl;    报错

三.逻辑运算符

逻辑运算符主要有三个: && || ! ,运算结果都是 bool类型。

1.逻辑与&&

两个为真才为真

int main()
{
 int a = 1;
 int b = 2;
 cout << (a == 1 && b == 2) << endl;; // 左为真 且 右为真 则结果为真
 cout << (a == 1 && b > 100) << endl; // 左为真 但 右为假 则结果为假
 cout << (a > 100 && b == 2) << endl; // 左为假 但 右为真 则结果为假
 cout << (a > 100 && b > 100) << endl; // 左为假 且 右为假 则结果为假
 return 0;
}

2.逻辑或||

int main()
{
 int a = 1;
 int b = 2;
 cout << (a == 1 || b == 2) << endl; // 左为真 且 右为真 则结果为真
 cout << (a == 1 || b > 100) << endl; // 左为真 但 右为假 则结果也为真
 cout << (a > 100 || b == 2) << endl; // 左为假 但 右为真 则结果也为真
 cout << (a > 100 || b > 100) << endl; // 左为假 且 右为假 则结果为假
 return 0;
}

3.逻辑非!

int main()
{
 int a = 1;
 cout << !(a == 1) << endl; // a == 1 为true,取个非就是false
 cout << !(a != 1) << endl; // a != 1 为false,取个非就是true
 return 0;
}

注:短路求值:对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表                           达式。对于 ||, 如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧                           表达式

四.位运算符

位运算符主要有四个: & | ~ ^

   1. 按位与 &: 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0.

int main()
{
	int a = 10;       //0000 1010
	int b = 20;       //0001 0100
	int ret = a&b;    //0000 0000
	cout << ret << endl;     //输出0
	return 0;
}

2.按位或|:如果两个二进制位有一个是一, 则结果为 1, 否则结果为 0.

int main()
{
	int a = 10;       //0000 1010
	int b = 20;       //0001 0100
	int ret = a|b;    //0001 1110
	cout << ret << endl;     //输出30
	return 0;
}

3.按位取反~:一变零,零变一

十六进制:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f    一个十六进制的数可以用4个比特位表示

int main()
{
	int a = 0x55555555;  // 0x表示16进制        一个十六进制5可以表示为0101
	a = ~a;              //                                    取反为1010
	cout << hex << a << endl;//  hex表示按十六进制输出          十六进制为a
	return 0;//                                             输出为aaaaaaaa
}

4.按位异或^:如果两个二进制位相同, 则结果为 0, 否则结果为 1.

五.移位运算

移位运算符有两个:<<  >> ,都是二元运算符,且都是按照二进制比特位来运算的。

1.左移 <<: 最左侧位不要了, 最右侧补 0.

// << 将高位丢弃,然后在低位补0
	short s = 1024; //  0000 0100 0000 0000
	s = s << 1;     //  0000 1000 0000 0000  给s乘以2=2048

	s = s << 1;   //    0001 0000 0000 0000  给s乘以2 = 4096
	s = s << 1;   //    0010 0000 0000 0000  给s乘以2 = 8192
	s = s << 1;   //    0100 0000 0000 0000  给s乘以2 = 8192*2
	s = s << 1;   //    1000 0000 0000 0000
	s = s << 1;

2.右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)

char ch = 0x07;   // 0000 0111
	ch = ch >> 1;     // 0000 0011--->3
	ch = ch >> 1;     // 0000 0001--->1
	ch = ch >> 1;     // 0000 0000--->0

注:1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.

       2. 右移 1 位, 相当于原 数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.

六. 条件运算符

条件运算符也称为三目运算符,语法格式为: 表达式1 ? 表达式2 : 表达式3

当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值;

当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值

int main()
{
	int a = 30;
	int b = 20;

	// 求a和b的最大值
	// 三目表达式来求:
	int ret = a > b ? a : b;
	cout << ret << endl;
	return 0;
}

七.逗号表达式

语法格式:表达式1,表达式2;

求解过程:先求表达式1的值,再求表达式2的值,整个逗号表达式的结果为表达式2的值。

标签:0000,cout,int,C++,运算符,main,表达式
来源: https://blog.csdn.net/qq_57496464/article/details/120399652

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有