语言转换软件都是不可靠,甚至可能造成大的bug

今天看帮一个朋友看一段代码,他用到了一段C# 的代码,由于朋友只熟悉 vb.net ,所有找了一个翻译软件从 C# 翻译成了 vb.net

找了半天,问题就跟这么一句话有关系。

在 C# 中

None.gif              int  a,b,c;
None.gif            a
= b = c = 1 ;

呵呵,执行玩 a=b=c=1 以后,三个变量都是1 emsmile.gif ,这个问题其实有点弱智 emembarrassed.gif

然后到 VB.NET 中

None.gif          Dim  a, b, c  As   Integer
None.gif        a 
=  b  =  c  =   1

这个代码我随便问了3个朋友,大家都说跟 C# 是一样的。显然执行玩候都是 1,你认为呢?

其实结果不是这样的,执行了 a=b=c=1 这句话,你会发现 abc更本没有变,仍然是 0。仔细看一下原因很简单,hh
vb.net 中 = 既可以当赋值运算符 又可以当逻辑运算符,这里是逻辑运算符。

bug 就跟这个有关系 emteeth.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. 动态类型与静态类型的区别: 动态类型指的是在程序运行时才能确定变量类型,而静态类型则是在编译时就确定了变量类型。动态类型语言的变量类型可以随时改变,而静态类型语言的变量类型则是在编译时就固定了。 2. 静态作用域/动态作用域的区别: 静态作用域指的是变量的作用域在编译时就已经确定了,在整个程序运行期间都不会改变。而动态作用域则是在运行时才能确定变量的作用域,变量的作用域可能会随着程序的执行而改变。 3. 一阶函数式语言与高阶函数式语言的区别: 一阶函数式语言指的是函数不能作为参数传递或者返回值,而高阶函数式语言则允许函数作为参数传递或者返回值。高阶函数式语言可以更加灵活地处理函数,使得程序更加简洁、易于维护。 4. 类型检查的方法: 类型检查是指在程序编译或运行时检查变量的类型是否符合规定。常见的类型检查方法包括静态类型检查和动态类型检查,其中静态类型检查是在编译时进行的,而动态类型检查是在程序运行时进行的。静态类型检查可以发现许多编程错误,但是需要更多的类型声明和编译时间,而动态类型检查则可以更好地处理动态变量类型。 ### 回答2: 1. 动态类型与静态类型的区别: 动态类型指的是在程序运行时,对变量的类型进行检查,并根据需要进行隐式类型转换。这意味着变量的类型可以在运行时改变。而静态类型则是在编译时对变量的类型进行检查和确定,变量所属的类型在编译时就确定下来,并且不能更改。 2. 静态作用域/动态作用域的区别: 静态作用域指的是在程序编译阶段就能确定各个变量的作用范围,变量的作用域在程序的整个生命周期内是不变的。而动态作用域则是在程序运行阶段才能确定变量的作用范围,变量的作用域在程序运行时可能会不断改变。 3. 一阶函数式语言与高阶函数式语言的区别: 一阶函数式语言中的函数只能作为值进行传递,不能将函数作为参数或返回值。函数只能接受常规的数据类型作为参数或返回值。而高阶函数式语言可以将函数作为参数传递给其他函数,也可以将函数作为返回值。这使得函数的传递和处理更加灵活、抽象化。 4. 类型检查的方法: 类型检查是指在编译时或运行时对变量的类型进行检查,以确保变量的使用符合语言规定的类型约束。常见的类型检查方法包括静态类型检查和动态类型检查。 - 静态类型检查:在程序编译时,通过编译器对变量的类型进行检查,发现类型错误时会产生编译错误。这种方法可以在开发过程中及早发现类型问题,提高代码的可靠性和可维护性。 - 动态类型检查:在程序运行时,通过解释器或运行时环境对变量的类型进行检查,发现类型错误时会引发运行时错误或异常。这种方法可以在程序运行时进行类型适配,但也会增加运行时的开销和风险。 总结:动态类型和静态类型的区别在于类型的检查时机,静态作用域与动态作用域的区别在于变量作用范围的确定时机,一阶函数式语言与高阶函数式语言的区别在于函数的处理能力。类型检查包括静态类型检查和动态类型检查两种方法。 ### 回答3: 动态类型与静态类型的区别在于类型的检查时机不同。静态类型语言在编译时进行类型检查,即在代码编译阶段确定变量的类型是否正确,提前发现错误。而动态类型语言在运行时进行类型检查,即在代码运行阶段才确定变量的类型,容易在运行时出现类型错误。 静态作用域和动态作用域的区别在于变量的作用域范围。静态作用域是在编译时确定变量的作用域,即在代码编写阶段就决定了变量的可见范围。而动态作用域是在运行时确定变量的作用域,即根据代码运行的流程,决定变量的可见范围。动态作用域更灵活,但也容易造成代码的混乱和不易理解。 一阶函数式语言是指只能定义和使用一阶函数的语言,一阶函数即只能传递和返回值为基本类型的函数。而高阶函数式语言是指可以定义和使用高阶函数的语言,高阶函数即能够传递和返回值为函数的函数。高阶函数式语言更灵活,可以使用函数作为参数或返回值进行抽象和组合,使代码更加简洁和可复用。 类型检查的方法包括静态类型检查和动态类型检查。静态类型检查在编译时进行,通过编译器对代码进行扫描和分析,检查变量的类型是否正确。静态类型检查可以在编码阶段发现类型错误,提前排除潜在的bug。而动态类型检查在运行时进行,通过解释器或虚拟机在代码执行时实时检查变量的类型。动态类型检查可以灵活应对变量类型的变化,但也容易在运行时出现类型错误。不同的编程语言使用不同的类型检查方法,根据需求选择适合的类型检查方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值