问题描述:
根据下面代码和运行结果回答下面的问题。
代码
// Created by 黑马程序员.
#include "iostream"
using namespace std;
int main()
{
// 单目(只有1个操作数)操作符:+、-
int num1 = +10; // + 表示正数
int num2 = -10; // - 表示负数
cout << num1 << "," << num2 << endl;
// 双目(有2个操作数)操作符:+、-、*、/、%
int num3 = 5 + 5; // + 相加
int num4 = 5 - 3; // - 相减
int num5 = 5 * 5; // * 相乘
int num6 = 10 / 3; // / 相除,如果两个操作数都是整数,是整除结果
int num7 = 10 % 3; // % 取余
cout << "5 + 5 = " << num3 << endl;
cout << "5 - 3 = " << num4 << endl;
cout << "5 * 5 = " << num5 << endl;
cout << "10 / 3 = " << num6 << endl;
cout << "10 % 3 = " << num7 << endl;
// 单目操作符:++(+1)、--(-1)
int a = 2;
int b = ++a; // 前置递增(+1),在赋值语句(=)之前,先执行加1的操作
cout << "a = " << a << ", b = " << b << endl;
int c = 2;
int d = c++; // 后置递增,在赋值语句之“后”,再执行加1的操作
cout << "c = " << c << ", d = " << d << endl;
int e = 2;
int f = --e;
cout << "e = " << e << ", f = " << f << endl;
int g = 2;
int h = g--;
cout << "g = " << g << ", h = " << h << endl;
return 0;
}
结果:
D:\CLion_code\cmake-build-debug\CLion_code.exe
10,-10
5 + 5 = 10
5 - 3 = 2
5 * 5 = 25
10 / 3 = 3
10 % 3 = 1
a = 3, b = 3
c = 3, d = 2
e = 1, f = 1
g = 1, h = 2
Process finished with exit code 0
问题:
在C++中,算术运算符的定义是什么呢?算术运算符是专为执行数学计算的符号。常用的算术运算符有哪些呢?请重点解释b = ++a和d = c++运算顺序有什么区别呢?同时,f = --e和h = g--运算顺序有什么区别呢?
问题解答:
问题分析
算术运算符是专门用于执行数学计算的符号。在 C++ 中,常用的算术运算符包括:
+
:可以表示正数或进行加法运算。-
:可以表示负数或进行减法运算。*
:表示乘法运算。/
:表示除法运算,如果两个操作数都是整数,则进行整除运算。%
:表示取余运算,即计算两个整数相除后的余数。
重点解释运算顺序
1. 前置递增运算 (++a
) 与后置递增运算 (c++
) 的区别
-
b = ++a
:前置递增,意味着在赋值运算之前,先将变量a
的值增加 1,然后将增加后的值赋给b
。因此,如果a
原本是 2,那么++a
之后,a
变为 3,同时b
也被赋值为 3。 -
d = c++
:后置递增,意味着先进行赋值操作,再将变量c
的值增加 1。因此,如果c
原本是 2,那么在d = c++
中,d
会被赋值为 2,而c
在此之后变为 3。
2. 前置递减运算 (--e
) 与后置递减运算 (g--
) 的区别
-
f = --e
:前置递减,意味着在赋值运算之前,先将变量e
的值减 1,然后将减少后的值赋给f
。如果e
原本是 2,那么--e
之后,e
变为 1,同时f
也被赋值为 1。 -
h = g--
:后置递减,意味着先进行赋值操作,再将变量g
的值减 1。因此,如果g
原本是 2,那么在h = g--
中,h
会被赋值为 2,而g
在此之后变为 1。
代码示例中的运算顺序解释
int a = 2;
int b = ++a; // a先增加1,a = 3,然后b = 3
输出结果:a = 3, b = 3
int c = 2;
int d = c++; // 先将c的值赋给d,d = 2,然后c增加1,c = 3
输出结果:c = 3, d = 2
int e = 2;
int f = --e; // e先减1,e = 1,然后f = 1
输出结果:e = 1, f = 1
int g = 2;
int h = g--; // 先将g的值赋给h,h = 2,然后g减1,g = 1
输出结果:g = 1, h = 2
结论
- 前置运算符:先进行自增/自减操作,然后再进行赋值。
- 后置运算符:先进行赋值,然后再进行自增/自减操作。
这就是 ++a
与 c++
以及 --e
与 g--
的主要区别。
花絮:
根据下面代码和运行结果回答下面的问题。
代码
// Created by 黑马程序员.
#include "iostream"
using namespace std;
int main()
{
// 单目(只有1个操作数)操作符:+、-
int num1 = +10; // + 表示正数
int num2 = -10; // - 表示负数
cout << num1 << "," << num2 << endl;
// 双目(有2个操作数)操作符:+、-、*、/、%
int num3 = 5 + 5; // + 相加
int num4 = 5 - 3; // - 相减
int num5 = 5 * 5; // * 相乘
int num6 = 10 / 3; // / 相除,如果两个操作数都是整数,是整除结果
int num7 = 10 % 3; // % 取余
cout << "5 + 5 = " << num3 << endl;
cout << "5 - 3 = " << num4 << endl;
cout << "5 * 5 = " << num5 << endl;
cout << "10 / 3 = " << num6 << endl;
cout << "10 % 3 = " << num7 << endl;
// 单目操作符:++(+1)、--(-1)
int a = 2;
int b = ++a; // 前置递增(+1),在赋值语句(=)之前,先执行加1的操作
cout << "a = " << a << ", b = " << b << endl;
int c = 2;
int d = c++; // 后置递增,在赋值语句之“后”,再执行加1的操作
cout << "c = " << c << ", d = " << d << endl;
int e = 2;
int f = --e;
cout << "e = " << e << ", f = " << f << endl;
int g = 2;
int h = g--;
cout << "g = " << g << ", h = " << h << endl;
return 0;
}
结果
D:\CLion_code\cmake-build-debug\CLion_code.exe
10,-10
5 + 5 = 10
5 - 3 = 2
5 * 5 = 25
10 / 3 = 3
10 % 3 = 1
a = 3, b = 3
c = 3, d = 2
e = 1, f = 1
g = 1, h = 2
Process finished with exit code 0
问题:
在C++中,算术运算符的定义是什么呢?算术运算符是专为执行数学计算的符号。常用的算术运算符有哪些呢?请重点解释b = ++a和d = c++运算顺序有什么区别呢?同时,f = --e和h = g--运算顺序有什么区别呢?
+表示正数,也可以表示相加
-表示负数,也可以表示相减
*表示相乘,/表示相除,%表示取余
++在前表示前置自增1,++在后表示后置自增1
--在前表示前置自减1,--在后表示后置自减1