【经验总结】全局变量在循环中不能赋值的问题

【c#】变量的作用域 1.全局变量 全局变量定义在函数外,用static修饰 class Program {     static string myString;     static void Main(string[] args)     {     } } 2.循环中变量的作用域     class Program 阅读详情

全局变量在循环中不能赋值的问题

by katana


全局变量在循环中不能赋值的问题

先来看一个例子:

itest=0

echo -e "katana/nlear/nfracnis/nkatana/n"|while read sLine

do 

if [ "$sLine" == "katana" ]

then 

let itest=$itest+1

echo "itest:$itest"

fi

done

echo "final itest:$itest"  

执行结果:

itest:1

itest:2

final itest:0


在执行循环过程中,itest都能正确相加,但是循环结束后itest没有被赋值。


这是while作用域的一个问题,当使用了管道|之后,while语句就会出现这样的问题,如果用另外一种方式实现:

itest=0

while read sLine

do 

if [ "$sLine" == "katana" ]

then 

let itest=$itest+1

echo "itest:$itest"

fi

done << SEF  

`echo -e "katana/nlear/nfracnis/nkatana/n"`

SEF

echo "final itest:$itest"  


或者使用文件来完成功能:

cat test.txt 

katana

lear

francis

katana


itest=0

while read sLine

do 

if [ "$sLine" == "katana" ]

then 

let itest=$itest+1

echo "itest:$itest"

fi

done <test.txt 



执行结果:

itest:1

itest:2

final itest:2


本文原创自无线技术运营空间: http://wireless.qzone.qq.com 及 http://blog.youkuaiyun.com/wireless_tech (专注无线技术运营——无线技术(操作系统/数据库/WEB前端/负载均衡/系统容灾/系统安全/短信接入/WAP接入/3G等)、无线业务运营、无线开放平台、统计分析(用户行为分析/数据挖掘)、CP合作,联系我们:1780551083@qq.com)

 

关于Ajax回调函数内返回值无法给全局变量赋值的问题 众所周知,Ajax从后端获得数据到回调函数,想要将获取的值赋给全局变量的话要将Ajax中的async改为false,使其同步,不然js在按顺序执行时等请求发出后就先去执行Ajax下面的代码了。 var data = CommonUtil.paramsUtil.getDataLoginId(); CommonUtil.ajax({ url: "/ChartControll... 阅读详情

相关推荐

关于Keil C 中全局变量的值出错的问题

单片机,全局变量

7024

vc 环境全局变量赋值引发的访问异常和解决过程

main()函数之前崩溃;VC全局变量引起的非法问题;引发了异常:读取访问权限冲突;出现了一个问题,导致程序停止正常工作。

2025

如何给结构体内声明的二维数组赋值

最近在用C++做一个象棋小游戏,为了规避全局变量的使用,想使用结构体来声明需要使用的数据。给其中用来存储棋盘信息的二维数组赋值时却遇到了问题: 在结构体内是不能进行数据初始化的,而在函数中(假设我定义了一个结构体d),也不能使用用d.map[3][3] = {{,,,},{,,,}};这样的方法给结构体内的数组定义,因为编译器会报这样的错误:错误 1 error C2440: “=”: 无法从“i...

英雄爱吃土豆片的博客 3394

C++数组赋值错误引起其它变量的值改变的问题

当程序执行完第3个语句b[1000]={0};的时候,data1的值突然变成了0,后来检查了以上代码,发现第3个语句的赋值方法不对,用大括号赋初值只能定义的时候赋值。总结:在非定义的时候给数组全部赋初值0的时候,不能使用{0}进行赋值,否则可能会引发其它变量的值发生改变,正确的赋值方法可用如上所示2种方法,用函数memset()或for循环逐个给数组元素赋值。

宁静致远 1397

【Lua基础 第3章】变量、赋值语句、索引、lua中的循环、循环控制语句

文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习。

KJ.JK 6234

STM32H743必要外围电路分析

写在前面:这篇博客是我第一次绘制STM32最小系统板的过程记录。 2020-1-11 BOOT STM32采用ARM内核,和ARM处理器一样,都有专门的boot脚决定单片机从何处启动。 在官方数据手册的第105页,我们可以看到 系统复位后,在SYSTICK的第四个上升沿锁存BOOT引脚的值,复位后,BOOT引脚可以由用户自由配置而不会影响系统正常运行。 BOOT引脚决定了自举存储器地址,当BO...

Cui_Hongwei的博客 1万+

全局变量数据错误的解决办法

线程同步: 保证同一时刻只能有一个线程去操作全局变量 同步: 就是协同步调,按预定的先后次序进行运行。如:你说完,我再说, 好比现实生活中的对讲机 线程同步的方式: 线程等待(join) 互斥锁 线程等待的代码 import threading 定义全局变量 g_num = 0 循环1000000次每次给全局变量加1 def sum_num1(): for i in range(1000000):...

yz_18543533331的博客 1935

Transformers 中的 Softmax 可以并行加速么?

通过融合前两个计算步骤,降低执行Reduce_max和Reduce_sum等操作的通信开销。利用共享内存来存储临时数据,以减少对全局内存的访问成本。

stephen147的博客 1234

关于String对象的值存在哪了

String是一个Final类, 一旦赋值之后,就不能再修改了, 但平时编码时经常会遇到对String对象修改的情况, 那就只有一种解释: 平时对String的值的每次修改都是创建了一个新的String对象 ,并将引用指向了这个新的对象 . 因为String的值永远不会变,那么多处引用如果存储同一个字符串就没有必要为这一个不会变的字符串分配多份存储空间,可以推测出, 所有同一个值的引用最终指向的都是一块存储空间. 查询JVM规范之后,证实了...

找不到的博客 1043

说说PSTN、ISDN、 ADSL三种互联网接入方式的区别。

互联网的接入方式: 电话拨号接入(PSTN) ISDN接入 ADSL接入 Cable MODEM接入 局域网接入 光纤接入(FDDI) 卫星接入 DDN专线 目前来说,ADSL和Cable MODEM比较常用,今天我们就先来说说PSTN、ISDN和ADSL的区别。 电话拨号接入(PSTN/POTS,Public Switched Telephone Network / Public Oold Telephone Service) 数据终端设备(DTE)通过数据通信设备(DCE)再连

Winyaz的博客 2万+

python3中 for 循环中循环变量的作用域问题

文章目录python3中 for 循环中循环变量的作用域问题1-1 来看一个例子1-2 来看第二个例子1-3 循环变量 覆盖 外层变量的问题2 python 变量的作用域的问题2-1 来看一个 全局变量的例子2-2 如何修改一个全局变量呢2-3 在函数中定义自己的变量总结 python3中 for 循环中循环变量的作用域问题 前段时间 对实际项目重构代码,然后在我给变量重新命名的时候, for 循环中循环变量名 和外层 的变量名,取名相同,结果直接覆盖了外层变量的值, 由此 我就查了一下 文档有了这篇文章。

阿常呓语的专栏 1万+

ArcGIS遥感影像分类技术在植被覆盖度计算中的应用

本文详细介绍了如何利用ArcGIS遥感影像分类技术高效计算植被覆盖度。通过数据准备、监督与非监督分类方法详解,并结合制表分析与栅格计算器进行面积统计,最终实现从分类图到覆盖度百分比的全流程自动化与可视化,为生态评估与规划提供精准数据支持。

weixin_29091445的博客 419

python的for循环语句赋值给url_python中for语句中对当前遍历对象赋值的问题?

Python 中 for 遍历通常不建议(不是不能)直接修改遍历对象本身,因为这样就会出现类似如下的问题:n = [1, 2, 3]for i in n:n.append(i)print(i)上段程序会进入无限死循环,因为 n 在每次迭代时,长度都会增加,因此for永远不可能穷尽,所以我们通常会使用迭代对象的副本进行遍历:n = [1, 2, 3]for i in n[:]:n.append(i)...

weixin_39832643的博客 420

嘉立创EDA vs Altium Designer:新手如何选择?从界面到实战全对比

本文全面对比了嘉立创EDA与Altium Designer(AD)两大PCB设计工具,从设计哲学、界面交互、封装库管理、设计规则引擎、协作功能到成本生态六大维度进行深入分析。嘉立创EDA以极简设计和云端协作为特色,适合学生和创客快速上手;而AD则凭借专业级精准控制,成为高端电子设计的行业标准。通过实战案例和详细对比表格,帮助新手根据项目需求选择合适的EDA工具。

weixin_30296405的博客 720

26、电子测量与旋转编码器控制技术解析

本文深入解析了电子测量中的电感测量技术与旋转编码器的控制方法。介绍了LC电路振荡原理、滤波器类型及其应用,并通过代码实现了基于脉冲宽度的电感值计算。对比了陶瓷电容与电解电容在高频测量中的性能差异。在旋转编码器部分,详细阐述了其工作原理,提出了抖动问题和检测遗漏的解决方案,包括中断检测法和基于4位状态映射的高精度控制方法。文章还探讨了相关技术在电力系统、通信设备、工业自动化和智能家居中的应用,并展望了高精度、智能化、小型化和无线化的发展趋势,为电子系统设计提供了实用指导和技术参考。

elastic6hunter的博客 97

关于JS全局变量问题

最近在easyui使用全局变量的时候老是执行if判断语句,而不执行顺序下来的局部赋值。导致老是提示undefined;经网上查询得知JS全局变量时:当全局变量跟局部变量重名时,局部变量的scope会覆盖掉全局变量的scope,当离开局部变量的scope后,又重回到全局变量的scope。Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分

yeyingss的专栏 1537

【电弧】基于matlab simulink电弧仿真模型(Mayr Cassie电弧模型)【含Matlab源码 9226期】

simulink电弧仿真模型(Mayr Cassie电弧模型) 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 193

python将循环遍历的数值赋值给变量

python将循环遍历的数值赋值给变量

m0_46400195的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Day 45 全局变量赋值

1.C语言初始化一个全局变量或static变量时,只能用常量赋值,不能用变量赋值! 2.for() 循环后面不能加分号,牢记(惨案)。

nihap123456的博客 556

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JavaScript连续赋值的执行顺序问题

引子 一道阿里的面试题 let a = { n:2 } let b = a a.x = a = { l:2 } // 说出 a 和 b的输出值 我第一次看到这个题目是懵逼的,因为平时没注意=的多次赋值的执行顺序的问题。 第一种答案: a => { l:2, x:{ l:2 } } b=> { n : 2 } 第二种答案: a => { l:2 } b=&...

gdutRex的博客 2419

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

第九节 全局变量、局部表量,赋值

View Code --全局变量,由系统定义(两个@@符) select@@version --局部变量 declare @name varchar(8) declare @seat int --变量赋值可以使用关键字:set、select set @name='张三' select @seat=15 --查看变量值 sele...

214

为什么局部变量必须手动赋值?而全局变量不用手动赋值也可以初始化?

实在知乎上看的答案,感觉很好,就转载一下,原文地址:            为什么全局变量无须初始化,局部变量必须初始化?   https://www.zhihu.com/question/30516949Intopass回答一:首先 Java 语言就是这么规定的。然后为什么 Java 语言要这么规定呢?有什么内部机理吗?可能的原因如下,当我们新建一个对象时,Java会在Heap中申请一块内存区域...

十里の清风 9007

Labview全局变量

LabVIEW全局变量是一种在整个LabVIEW程序中可以共享和访问的变量。全局变量可以在程序的任何地方进行读取和写入操作,以便在不同的VI(Virtual Instrument,虚拟仪器)之间共享数据。

Vinnie0的博客 5016

解包赋值

解包赋值是一个方便代码编写的语法特性,在一个赋值语句中可将右边表达式的值自动解开赋值给左边,如: a, b = t 简单看上去相当于: a = t[0] b = t[1] 不过若t的位置是一个表达式,则下面这样做就必须用一个临时变量来防止重复求值,事实上这个代码和解包并不等价,解包赋值的具体步骤更复杂一点: 首先,计算右边的表达式,以及左边的各左值元素中的需计算部分(如果有的话,比如a[i

xtlisk的专栏 2995

vue 为全局变量赋值_vue批量异步更新策略

上次我们讲解了patch函数的工作原理,那么如果在一个进程中我们以同步的方式把数据改变多次,vue也会patch多次、渲染多次么?在前两篇《通过Vue2.0源码理解vue生命周期》讲完了渲染watcher的响应式原理以后,本次我们来讲解这个问题也可以将前两次所讲的内容连接起来。先来看一个简单的demo,页面是这样:模板如下:点击add按钮以后,会执行add函数:...

weixin_36459367的博客 1327
上一篇: 【经验总结】shell 日期小技巧
下一篇: 【数据库】MySQL性能优化简介
wireless_tech
博客等级 码龄16年 23粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值