数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1639|回复: 9

[C51] 关于赋值,百思不得解的一个问题

[复制链接]
发表于 2024-1-5 16:37:09 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
本帖最后由 iritwq 于 2024-1-5 16:38 编辑

在VBA中运行这一段语句:
               tmp1 = 0
               tmp2 = 0
               tmp3 = 0
               tmp4 = 0
               Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
               tmp1 = 1
               Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
               tmp2 = 2
               Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
               tmp3 = 3
               Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
               tmp4 = 4
               Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""

设想输出会是
               0,0,0,0
               1,0,0,0
               1,2,0,0
               1,2,3,0
               1,2,3,4
没想到实际输出是

               0,0,0,0
               1,0,0,0
               1,2,2,0
               1,3,3,0
               1,3,3,4

根据结果看是tmp2是tmp3这两个变量是同步变化的,实在是想不通,大家测试下其它环境下有没有这种现象,分析下这个是什么原因

发表于 2024-1-5 16:51:47 | 显示全部楼层
是不是跟变量延迟还是什么的有关系,貌似有这么个设置
回复 支持 反对

使用道具 举报

发表于 2024-1-5 16:59:58 | 显示全部楼层
你的设想是错的,再仔细看下代码
回复 支持 反对

使用道具 举报

发表于 2024-1-5 22:11:53 | 显示全部楼层
本帖最后由 啊啊斑斑驳驳 于 2024-1-5 23:14 编辑

测试一:
https://c.runoob.com/compile/5648/ 输入代码:
  1. Module Module1
  2.     Sub Main()
  3.         Console.WriteLine("Hello World!")
  4.                 Dim tmp1,tmp2,tmp3,tmp4 AS Integer
  5.                 tmp1 = 0
  6.                 tmp2 = 0
  7.                 tmp3 = 0
  8.                 tmp4 = 0
  9.                 Console.WriteLine(tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & "")
  10.                 tmp1 = 1
  11.                 Console.WriteLine(tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & "")
  12.                 tmp2 = 2
  13.                 Console.WriteLine(tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & "")
  14.                 tmp3 = 3
  15.                 Console.WriteLine(tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & "")
  16.                 tmp4 = 4
  17.                 Console.WriteLine(tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & "")
  18.     End Sub
  19. End Module
复制代码
输出结果:
Hello World!
0,0,0,0
1,0,0,0
1,2,0,0
1,2,3,0
1,2,3,4
符合预期。
测试二:
在本地电脑中打开Excel(版本2311)启用 开发工具,新建工作簿,在代码编辑窗口输入代码:
  1. Sub 宏2()
  2.     Dim tmp1, tmp2, tmp3, tmp4 As Integer
  3.     tmp1 = 0
  4.     tmp2 = 0
  5.     tmp3 = 0
  6.     tmp4 = 0
  7.     Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
  8.     tmp1 = 1
  9.     Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
  10.     tmp2 = 2
  11.     Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
  12.     tmp3 = 3
  13.     Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
  14.     tmp4 = 4
  15.     Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
  16. End Sub
复制代码
输出结果:
0,0,0,0
1,0,0,0
1,2,0,0
1,2,3,0
1,2,3,4
符合预期。

测试三:
在WIN10虚拟机中,运行VB,新建EXE,添加按键,编辑单击事件,代码如下:
  1. Private Sub Command1_Click()
  2.     Dim tmp1, tmp2, tmp3, tmp4 As Integer
  3.     tmp1 = 0
  4.     tmp2 = 0
  5.     tmp3 = 0
  6.     tmp4 = 0
  7.     Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
  8.     tmp1 = 1
  9.     Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
  10.     tmp2 = 2
  11.     Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
  12.     tmp3 = 3
  13.     Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
  14.     tmp4 = 4
  15.     Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
  16. End Sub
复制代码

输出结果:

0,0,0,0
1,0,0,0
1,2,0,0
1,2,3,0
1,2,3,4

符合预期。
无法复现你的输出。
建议更换编辑环境。



回复 支持 反对

使用道具 举报

发表于 2024-1-6 14:17:01 | 显示全部楼层
0,0,0,0
1,0,0,0
1,2,0,0
1,2,3,0
1,2,3,4
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-7 17:48:59 | 显示全部楼层
茶壹杯 发表于 2024-1-5 16:59
你的设想是错的,再仔细看下代码

为什么这样说呢?楼下测试代码结果是符合预期的,但是我运行就是不行,如果把tmp3改成ccc结果就符合预期了,所以才说百思不得解

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-7 17:55:46 | 显示全部楼层
啊啊斑斑驳驳 发表于 2024-1-5 22:11
测试一:
在 https://c.runoob.com/compile/5648/ 输入代码:
输出结果:

我用的是wps表格,这个情况出现过好几次了,最后的解决办法是改变量名,本来整齐的名字在调完程序就乱了
回复 支持 反对

使用道具 举报

发表于 2024-1-7 23:54:03 | 显示全部楼层
本帖最后由 啊啊斑斑驳驳 于 2024-1-7 23:56 编辑

在WIN10虚拟机中,安装WPS2019 专业版 版本号:11.8.2.10912-Release,新建表格,添加宏,代码如下:
  1. Sub Macro1()
  2.     Dim tmp1, tmp2, tmp3, tmp4 As Integer
  3.     tmp1 = 0
  4.     tmp2 = 0
  5.     tmp3 = 0
  6.     tmp4 = 0
  7.     Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
  8.     tmp1 = 1
  9.     Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
  10.     tmp2 = 2
  11.     Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
  12.     tmp3 = 3
  13.     Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
  14.     tmp4 = 4
  15.     Debug.Print tmp1 & "," & tmp2 & "," & tmp3 & "," & tmp4 & ""
  16. End Sub
复制代码
输出结果:
0,0,0,0
1,0,0,0
1,2,0,0
1,2,3,0
1,2,3,4


符合预期。
建议卸载重装,或更新版本。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-8 20:26:51 | 显示全部楼层
啊啊斑斑驳驳 发表于 2024-1-7 23:54
在WIN10虚拟机中,安装WPS2019 专业版 版本号:11.8.2.10912-Release,新建表格,添加宏,代码如下:
输出 ...

这个应该不是系统的问题,我看看把这部分单独剥离出来会不会也是这样
回复 支持 反对

使用道具 举报

发表于 2024-1-16 15:16:53 | 显示全部楼层
iritwq 发表于 2024-1-8 20:26
这个应该不是系统的问题,我看看把这部分单独剥离出来会不会也是这样

有没有不符合预期的截图,我始终不太相信
回复 支持 反对

使用道具 举报

发表于 2024-1-17 08:10:54 | 显示全部楼层
南天音乐 发表于 2024-1-16 15:16
有没有不符合预期的截图,我始终不太相信

我觉得也是有截图好一点
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-19 21:06 , Processed in 0.187200 second(s), 8 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表