扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
C返回局部变量的值也没问题啊
成都创新互联主营卧龙网站建设的网络公司,主营网站建设方案,成都app开发,卧龙h5微信小程序定制开发搭建,卧龙网站营销推广欢迎卧龙等地区企业咨询
只是如果这个局部变量是指向栈上的内存的指针,由于函数结束后活动栈被清空,会导致指针失效。
VB.NET不支持指针语法,它不可能返回指向栈上的指针,所以用不着担心这个问题。
你的理解
第一点理解是正确的,不过和这个问题关系不大。因为引用类型本来就不是分配在栈上的,它当然就不受函数的影响。
第二点,那个只是个语法问题。VB6没有Return语句,所以它必然有另外一种语法来表明函数的返回值。这个和函数能否返回正确的对象没有关系,就是一种表明函数返回值的语法。
编译器确实定义了一个和函数同名的变量,那个变量就是一个普通的局部变量,作用域就在函数的局部域里。这个变量没什么特别的,就是编译器会在函数结束时把这个变量的值作为函数的返回值返回而已。
1000=x2000,并不是(1000=30002000)为真
而是先判断(1000=3000)为真也就是1,然后(12000)为真
EXCEL表格一样的公式,但计算结果显示会不正确可能是因为单元格式的设置不对,可以通过重新设置EXCEL表格中单元格的格式,使公式计算的结果正确。
在EXCEL中使用公式使计算结果调整正确的方法及具体操作步骤如下,以wps2019中的EXCEl表格为例做演示。
1、在电脑wps中找到需要操作的EXCEl表格,如下图所示,进入下一步。
2、将鼠标选中错误结果的单元格,点击鼠标右键,在弹出的设置选项对话框中选择“设置单元格格式”选项,点击进入下一页面,如下图所示。
3、然后将单元格格式选定为常规,如下图所示,进入下一步。
4、选项单元格格式后,点击下方的“确定”选项,如下图的所示,进入下一步。
5、这时就可以看到原先单元格中错误的结果已经修改过来了,如下图所示,完成错误结果的修改过程。
这应该是由浮点数的误差所造成的,你把kk设为双精度浮点数,那么结果就是1.34
但是浮点数误差与精度是无关的,双精度也同样存在,继续测试你就会发现有趣的现象:
下面假定s为单精度浮点数变量,d为双精度浮点数变量,则:
s = 1.345 Round(s, 2) = 1.35 (错)
d = 1.345 Round(d, 2) = 1.34 (对)
s = 2.345 Round(s, 2) = 2.35 (错)
d = 2.345 Round(d, 2) = 2.35 (错)
s = 3.345 Round(s, 2) = 3.35 (错)
d = 3.345 Round(d, 2) = 3.34 (对)
s = 4.345 Round(s, 2) = 4.34 (对)
d = 4.345 Round(d, 2) = 4.34 (对)
可以发现这错误的发生是毫无规律的,有时候真能让人发疯!
VB的运算顺序是:先乘除、后加减,有括号的先算括号内,有负号的先算负号。
请你比较一下这个运算中x和y的值:
Dim n As Single = 4
Dim x As Single
Dim y As Single
x = n + 1
x = x / n
x = x - 1
x = Math.Sqrt(x)
y = Math.Sqrt((n + 1) / n - 1)
这样就会发现,你的代码中括号的位置错了。
正确的应该是: Math.Sqrt((n + 1) / n - 1)
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流