如果positive_number很大会有什么问题么?
来源:5-10 bash数学运算之expr(下)
慕勒3498910
2022-09-21
老师,你好。关于课上的练习题,我这边也参照老师的讲解思路,在本地,做了一下练习,具体的代码如下:
#!/bin/bash # while true do read -p "请输入一个正整数:" num expr $num + 1 &> /dev/null if [ $? -ne 0 ]; then echo "输入的数字中存在小数" continue else is_negative=`expr $num \< 0` if [ $is_negative -eq 1 ]; then echo "输入的数字小于0" continue fi sum=0 for(( i = 1; i <= $num; i++)) do sum=$(( sum + i )) done echo "1+2+3+...+$num=$sum" exit fi done
一般的输入条件下,输入一个较小的正整数时,也是没有什么问题的,可以进行正常计算,并输出正确的运算结果。就是,我想了解一下,SHELL中,因为没有像JAVA这类高级编程语言拥有变量类型的概念,因此,当我尝试输入一个很大的正整数时,比如:9999999999,我就想看一下会出现什么现象。我在本地的尝试结果是,脚本就一直没有输出结果,就一直让我在等待,我想了解一下,这样的情况下,脚本的运行是会进入一个什么样的运行状态呢?会是一直没法完成最终报错么?对造成对整个系统的影响么?我这边,并没有一直等待下去,而是,直接通过ctrl+c,来手动终止了脚本的运行。效果图如下:
写回答
1回答
-
酷田
2022-11-04
首先:shell作为linux原生的语言,主要用途是用于系统管理,并不适合用于这种计算;
其次:本身你这个循环需要遍历99亿次,shell是逐行解释执行的,效率会远远高于高级语言(java、c)等。
最后:倒不一定会对系统导致严重的影响,只是会非常慢,而且计算结果也不一定正确。
00
相似问题