IDC:表达式

来源:互联网 发布:设置网络位置选哪个好 编辑:程序博客网 时间:2024/06/06 10:39

IDC:表达式

  • 在IDC脚本中,除了 += 这个表达式之外,其他所有的C语言的表达式都可以直接使用

  • 常量的定义跟C语言很类似,但是也有一点点小区别,比如IDC支持以下四种数据转换操作:

    1. long(expr) 转换过程中,浮点会被截断,转换成long型

    2. char(expr)

    3. float(expr)

    4. _int64(expr)

  • 在大部分情况下,在IDC脚本中不需要进行显式的类型转换操作,IDC脚本内部会进行自动的转换,规则如下:

    • 加 操作:

      1. 如果2个操作数都是字符串,直接进行字符串拼接

      2. 如果2个操作数都是对象,直接进行对象的组合(返回一个新对象)

      3. 如果其中一个操作数是浮点,则两个操作数全部转换成浮点来计算

      4. 对于其他的情况,两个操作数全部转换成long型再计算

    • 减/乘/除:

      1. 如果存在浮点操作数,则2个操作数全部转换成浮点再计算

      2. 如果两个操作数都是对象并且操作是减,直接执行减法操作(返回一个新对象)

      3. 对于其他的情况,两个操作数全部转换成long型再计算

    • 比较操作(==, !=, etc):

      1. 如果两个操作数都是字符串,直接进行字符串比较操作

      2. 如果存在浮点操作数,两个操作数都转换成浮点再比较

      3. 其他的情况,都转换成数字再比较

    • 其他操作符

      1. 一律转换成long型进行计算

  • 如果其中一个long型数据是64位的,那么其他的操作数也会转换成64位的

  • 类型转换这个事情还有一个例外的情况:如果一个操作数是字符串,另外一个是0, 那么最后会执行字符串操作,0会被转换成一个空字符串

  • &符号可以用来取变量的引用, 你可以像使用指针那样来使用引用,通过引用来修改原始对象的值。需要注意的是引用变量一旦创建就不能修改了,不像C语言的指针那样,可以指来指去。还是举个例子吧:

    auto x, r;r = &x;r = 1;   // x is equal to 1 now

    引用的引用还是直接指向原始的对象,例子如下:

    auto x, r1, r2;r1 = &x;r2 = &r1; // r2 points to x
  • 在给函数传参的时候,默认情况下非对象类型都是值传递的,有的时候,非对象类型通过引用传参是一个不错的选择。

原创粉丝点击