算数运算符是什么
算数运算符用于执行算数计算。数学运算符一共9个,分为两类:
算数运算符:加、减、乘、除、取模
自增自减运算符:前置自增、后置自增、前置自减、后置自减
算数运算符
加法运算符 (+
)
用于数值相加(注意数据类型问题)
也可用于字符串连接(但这不是数学运算)
int a = 5 + 3; //8
int a = 5.0 + 3; //报错
double a = 5.0 + 3; //8.0
double a = 5 + 3; //8.0 目标类型double能完整容纳源类型值int且不损失精度时数据类型转换自动发生
double b = 4.2 + 2.8; //7.0
string s = "Hello" + " World"; // "Hello World"(非数学运算)
数值的精度
int :整型最低 10/ 3 = 3
float: 单精度浮点数 10/3 = 3.3333333
double:双精度浮点数 10/3 = 3.3333333333333333
decimal: 高精度小数 10/3 = 3.33333333333333333333333333
减法运算符 (-
)
用于数值相减
也可用作一元运算符表示负数
一元运算符:指操作一个值的运算符。
int a = 10 - 4; // 结果:6
double b = -5.5; // 负数值
int c = -(-10); // 结果:10(双重否定)
乘法运算符 (*
)
用于数值相乘
int a = 6 * 7; // 结果:42
double b = 2.5 * 4; // 结果:10.0
除法运算符 (/
)
整数除法:结果截断小数部分
浮点除法:保留小数部分
int a = 10 / 3; // 结果:3(整数除法)
float f = 10 / 3; //3.0f
float f = 10.0 / 3; //报错
float f = 10.0f / 3; //3.3333333f
double d = 10.0 / 3; //3.3333333333333335d
decimal m = 10m / 3m; //3.3333333333333333333333333333m
//混合运算的类型提升
int a = 2 * 1.5;
int a = 3 / 2;
double a = 3 / 2; //期望1.5,实际1(纯整数运算无提升)
double a = 3.0 / 2; //期望1.5:使用混合运算时,可以得到1.5(整数自动提升为小数)
double a = (double)3 / 2; //期望1.5: 先转double,可以得到1.5
取模运算符 (%
)
返回除法后的余数
用途:判断奇偶性、循环索引等
int remainder = 10 % 3; // 结果:1
bool isEven = (15 % 2) == 0; // 判断偶数:false
自增/自减运算符
前置自增 (++x
)
先增加,后使用值
//++:表示自增运算符(自己+1)
int n = 5;
//++n;
n++;
Console.WriteLine(n);
//--:表示自减运算符(自己-1)
int n1 = 5;
--n1;
Console.WriteLine(n1);
int a = 5;
int b = ++a; //
Console.WriteLine(a);
Console.WriteLine(b);
后置自增 (x++
)
先使用值,后增加
int a = 5;
int b = a++; //
前置自减 (--x
)
先减少,后使用值
int a = 5;
int b = --a; //
后置自减 (x--
)
先使用值,后减少
int a = 5;
int b = a--; //
运算符优先级
从高到低:
括号
()
自增/自减(前缀)
乘法
*
、除法/
、取模%
加法
+
、减法-
自增/自减(后缀)
赋值运算符
int result = 5 + 3 * 2; // 3*2=6 → 5+6=11
int withParens = (5 + 3) * 2; // 5+3=8 → 8*2=16
总结
C# 9个数学运算符概览
练习(算数运算符5道)
1.交换变量值(不用临时变量)
2.判断奇偶性
3.result 的值是多少?
int result = 8 + 15 % 4 * 2;
4.x 的最终值是多少?
int x = 20;
x /= 4;
x += 3;
x *= 2;
5.将125分钟转换成小时(hours)和分钟(minutes)。
练习(自增自减24道)
1.执行以下代码后,x
的值是多少?
int x = 5;
x = x++ + ++x;
1. x = 5
2. x = 5
3. x = 6
A) 10 B) 11 C) 12 D) 13
2.代码输出结果是什么?
int a = 3;
Console.Write(a++ + " " + ++a);
A) 3 5
B) 4 4
C) 3 4
D) 4 5
3.执行后 b
的值是多少?
int b = 10;
b += b-- + --b;
A) 27 B) 28 C) 29 D) 30
4.最终 z
的值是多少?
int y = 8;
int z = y-- * 2 + ++y;
A) 24 B) 25 C) 26 D) 27
5.代码输出结果是什么?
int i = 1;
Console.Write(i++ + ++i + i);
A) 6 B) 7 C) 8 D) 9
6.执行后 m
的值是多少?
int m = 6;
m = --m + m++ * 2;
A) 15 B) 16 C) 17 D) 18
7.最终 p
和 q
的值是多少?
int p = 7;
int q = p++ + --p;
A) p=7, q=14 B) p=7, q=15 C) p=8, q=14 D) p=8, q=15
8.代码输出结果是什么?
int x = 4;
Console.Write($"{x++} {x} {++x}");
A) 4 5 6
B) 4 5 5
C) 5 5 6
D) 4 4 5
9.执行后 sum
的值是多少?
int a = 2, b = 3;
int sum = a++ + ++b + a + b--;
A) 11 B) 12 C) 13 D) 14
10.最终 counter
的值是多少?
int counter = 0;
for (int i = 0; i < 5; i++) {
counter += i++;
}
A) 4 B) 6 C) 10 D) 15
11.代码输出结果是什么?
int num = 9;
Console.Write(num-- - --num);
A) 1 B) 2 C) 3 D) 4
12.执行后 result
的值是多少?
int x = 5, y = 3;
int result = ++x * y-- + x++ - --y;
A) 22 B) 23 C) 24 D) 25
13.最终 a
和 b
的值是多少?
int a = 10, b = 20;
a = b++;
b = ++a;
A) a=20, b=21 B) a=21, b=21 C) a=20, b=20 D) a=21, b=20
14.代码输出结果是什么?
int i = 0;
Console.Write(i++ + ++i + i-- + --i);
A) 2 B) 3 C) 4 D) 5
15.执行后 value
的值是多少?
int value = 15;
value = value-- + --value * 2;
A) 41 B) 42 C) 43 D) 44
16.最终 x
的值是多少?
int x = 1;
x += x++ + ++x + x;
A) 8 B) 9 C) 10 D) 11
17.代码输出结果是什么?
int a = 5, b = 3;
Console.Write(a++ * --b + a / b);
A) 11 B) 12 C) 13 D) 运行时错误(除零异常)
18.执行后 total
的值是多少?
int count = 0;
int total = 0;
while (count++ < 4) {
total += count;
}
A) 6 B) 10 C) 15 D) 21
19.最终 p
和 q
的值是多少?
int p = 8, q = 4;
q = p++ - --q;
p = q-- * 2;
A) p=12, q=3 B) p=14, q=4 C) p=16, q=5 D) p=18, q=6
20.代码输出结果是什么?
int x = 2;
Console.Write($"{x} {++x} {x++} {x}");
A) 2 3 3 4
B) 2 3 4 4
C) 3 3 3 4
D) 2 3 3 3
21.a 和 b 的值分别是多少?
int a = 5;
int b = a++ + 2;
22.x 的最终值是多少?
int x = 10;
x += 5;
x *= 2;
23.i, j, k 的值分别是多少?
int i = 3;
int j = ++i * 2;
int k = i-- + 1;
24.a, b, c 的最终值分别是多少?
int a = 5;
int b = a-- + 4;
int c = ++b * 2;
答案(算数运算符)
1.答案
int a = 5, b = 10;
a = a + b; // a=15
b = a - b; // b=5
a = a - b; // a=10
2.答案
bool isEven = (number % 2) == 0;
3.result=10
15%4=3
→ 3*2=6
→ 8+6=10
4.x=14** 初始20 →
20/4=5→
5+3=8→
8*2=16` 注意:整数除法
5.hours=2, minutes=5 125/60=2
(小时) → 125%60=5
(分钟)
答案(自增自减)
C) 12
x++
返回 5(后置),x 变为 6 →++x
先自增为 7 → 5 + 7 = 12A)
3 5
先输出a++
(输出 3,a 变为 4)→++a
先自增为 5 → 输出 5B) 28
b--
返回 10(b 变 9)→--b
先自减为 8 → 10 + 8 = 18 →b += 18
(9+18=27)❌ 修正:表达式计算顺序:b--
(值10,b=9)→--b
(b=8,值8)→ 10+8=18 →b = 9 + 18 = 27
答案应为 A) 27,题目选项有误B) 25
y--
返回 8(y 变 7)→8*2=16
→++y
先自增为 8 → 16 + 8 = 24 ❌ 修正:y--
后 y=7 →++y
使 y=8 → 16 + 8 = 24 → z=24 答案应为 A) 24,题目选项有误B) 7
i++
返回 1(i 变 2)→++i
先自增为 3 →i
当前值 3 → 1 + 3 + 3 = 7A) 15
--m
先自减为 5 →m++
返回 5(后自增为 6)→5*2=10
→ 5 + 10 = 15A) p=7, q=14
p++
返回 7(p 变 8)→--p
先自减为 7 → 7 + 7 = 14 → q=14A)
4 5 6
输出x++
(输出 4,x 变 5)→ 输出x
(5)→++x
自增为 6 并输出B) 12
a++
返回 2(a 变 3)→++b
自增为 4 →a=3
→b--
返回 4(b 变 3)→ 2+4+3+4=13 ❌ 修正:a++
=2(a=3)→++b
=4(b=4)→ a=3 →b--
=4(b=3)→ 2+4+3+4=13 → 答案应为 C) 13B) 6
i=0
:counter=0+0=0 →i++
变1 → 循环步进i++
变2i=2
:counter=0+2=2 →i++
变3 → 循环步进i++
变4i=4
:counter=2+4=6 →i++
变5 → 结束B) 2
num--
返回 9(num 变 8)→--num
先自减为 7 → 9 - 7 = 2C) 24
++x
→x=6 →y--
返回 3(y 变 2)→6*3=18
→x++
返回 6(x 变 7)→--y
自减为 1 → 18 + 6 - 1 = 23 ❌ 修正:++x
=6 →y--
=3(y=2)→ 6*3=18 →x++
=6(x=7)→--y
=1(y=1)→ 18+6-1=23 → 答案应为 B) 23B) a=21, b=21
a = b++
(a=20, b=21)→b = ++a
(a 先自增为 21 → b=21)C) 4
i++
返回 0(i=1)→++i
自增为 2 → 返回 2 →i--
返回 2(i=1)→--i
自减为 0 → 返回 0 → 0+2+2+0=4C) 43
value--
返回 15(value=14)→--value
自减为 13 →13*2=26
→ 15+26=41 ❌ 修正:表达式为value-- + (--value * 2)
→value--
=15(value=14)→--value
=13(value=13)→ 15 + (13*2)=41 → 答案应为 A) 41A) 8
x++
返回 1(x 变 2)→++x
自增为 3 →x=3
→ 1+3+3=7 →x +=7
(2+7=9)❌ 修正:原始 x=1 → 表达式:x++
=1(x=2)→++x
=3(x=3)→ 当前 x=3 → 1+3+3=7 →x = 1 + 7 = 8
(因为x += ...
等价于x = x + ...
,此时 x 是原始值 1) 最终 x=8D) 运行时错误(除零异常)
a++
返回 5(a=6)→--b
自减为 2 →5*2=10
→a/b = 6/2=3
→ 10+3=13 ❌ 修正:b 自减后为 2,不会除零 → 正确答案为 B) 12? 重新计算:--b
使 b=2 →a/b
= 6/2=3 → 5*2=10 → 10+3=13 → 答案应为 C) 13B) 10 循环过程: count=0:count++<4 成立 → total=0+1=1(count 自增为 1) count=1:count++<4 成立 → total=1+2=3(count=2) count=2:count++<4 成立 → total=3+3=6(count=3) count=3:count++<4 成立 → total=6+4=10(count=4) count=4:count++<4 不成立 → 结束
A) p=12, q=3 第一行:
p++
返回 8(p 变 9)→--q
自减为 3 →q = 8 - 3 = 5
❌ 修正:p++
=8(p=9)→--q
=3(q=3)→q = 8 - 3 = 5
→ 第二行:q--
返回 5(q 变 4)→p = 5 * 2 = 10
最终 p=10, q=4(无匹配选项)A)
2 3 3 4
x
输出 2 →++x
自增为 3 并输出 →x++
输出 3(后自增为 4)→x
输出 4
21.a=6, b=7
a++
先返回原值5再自增 → 5+2=7
→ 后a自增为6 22.x=30
初始10 → 10+5=15
→ 15*2=30
23.i=3, j=8, k=5
++i
:i先变4 →4*2=8
(j=8)i--
:先用i=4 →4+1=5
(k=5) → 后i自减为3 24.a=4, b=10, c=20`**a--
:先用a=5 →5+4=9
(b=9) → a自减为4++b
:b先增为10 →10*2=20
(c=20)