将等号右边的值存储到等号左边的变量中的运算符, 就叫赋值运算符。
- 简单的赋值运算符: =
- 复杂的赋值运算符: += -= *= /= %=
赋值运算符的优先级和结合性
- 赋值运算符的优先级低于算术运算符
// 由于算术运算符的优先级要高于赋值运算符, 所以这里会先计算 1 + 1, 然后再赋值给res
let res = 1 + 1;
console.log(res); // 2
- 赋值运算符的结合性是右结合性(从右至左的运算)
// 由于赋值运算符的结合性是右结合性, 所以会先将 3 赋值给num2, 然后再将num2的值赋值给num1
let num1, num2;
num1 = num2 = 3;
console.log(num1); // 3
console.log(num2); // 3
简单的赋值运算符
- 格式: 变量 = 数据
// 将等号右边的常量10赋值给左边的变量num
var num = 10;
// 将等号右边的变量num中存储的值赋值给左边的变量value
var value = num;
复杂的赋值运算符
- 格式: 变量 复合赋值运算符 表达式; 如: a *= 1 + 2;
- 由于赋值运算符是右结合性, 所以会先计算等号右边, 然后再进行复合运算
// 会将等号左边存储的值取出来, 与等号右边的值进行指定的运算, 运算完毕之后再讲运算的结果存储到左边
var value = 5;
value *= 2 - 2; // 等价于 value = 5 * (2 - 2);
console.log(value); // 0
- 复杂运算符的解释
+= 加后赋值--> 变量 += 表达式 如: a += 3;即 a = a + 3;
-= 减后赋值--> 变量 -= 表达式 如: a -= 3;即 a = a - 3;
*= 乘后赋值--> 变量 *= 表达式 如: a *= 3;即 a = a * 3;
/= 除后赋值--> 变量 /= 表达式 如: a /= 3;即 a = a / 3;
%= 取模后赋值--> 变量 %= 表达式 如: a %= 3;即 a = a % 3;
九九乘法表
- FOR循环写
for i in `seq 1 9`;do
for j in {1..9};do
if [ $j -le $i ];then
echo -e "${j}x${i}=$[j*i]\t\c"
fi
done
done
- While循环写
i=1
while [ $i -le 9 ];then
j=1
while [ $j -le $i ];then
let k=i*j
echo -e "${i}x${j}=$k\t\c"
let j++
done
echo
let i++
done
- 结果如下:
sh nine.sh
1x1=1
2x1=2 2x2=4
3x1=3 3x2=6 3x3=9
4x1=4 4x2=8 4x3=12 4x4=16
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
国际象棋棋盘
程序分析
国际象棋是 8*8 的,i (1~8) 代表行,j (1~8)代表列。当 i+j 为奇数的时候,是黑色格子,反之,白色格子。
- 用for语句来实现
for i in {1..8};do
for j in {1..8};do
flag=$[(i+j)%2]
if [ $flag -eq 0 ];then
echo -e "\033[37m \033[0m\c"
else
echo -e " \c"
fi
done
done
- 输出结果如图:
- 用while语句来实现
i=1
while [ $i -le 8 ];do
j=1
while [ $j -le 8 ];do
flag=$[(j+i)%2]
if [ $flag -eq 0 ];then
echo -e "\033[35m \033[0m\c"
else
echo -e " \c"
fi
let j++
done
let i++
done
- 输出结果如图: