<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <b>On 17/11/20 15:03, Bruce Steers wrote:</b><br>
    <blockquote type="cite"
cite="mid:CABuQYCCHEbcvUQTPRGnsa5HmckBYbPkuEYW2vbdHgraKAYt++w@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">
        <div class="gmail_default" style="font-size:small">Is this a bug
          in the scripter or bad coding technique on my part?...</div>
        <div class="gmail_default" style="font-size:small">getting a
          type mismatch error if i do not wrap variables in parentheses?<br>
        </div>
        <div class="gmail_default" style="font-size:small">doesn't
          happen like this in normal gambas exe.<br>
        </div>
        <div class="gmail_default" style="font-size:small">If I use code
          like the following in a gbs script...<br>
        </div>
        <div class="gmail_default" style="font-size:small">Dim iVal As
          Integer = 1<br>
        </div>
        <div class="gmail_default" style="font-size:small">Print iVal  '
          This prints '1'<br>
        </div>
        <div class="gmail_default" style="font-size:small">
          <div class="gmail_default" style="font-size:small">Print iVal
            + 1 ' this prints '2'<br>
          </div>
          <div class="gmail_default" style="font-size:small">Print "Val
            = " & iVal  ' this prints 'Val = 1'<br>
          </div>
        </div>
        <div class="gmail_default" style="font-size:small">
          <div class="gmail_default" style="font-size:small">Print "Val
            = " & iVal + 1<br>
          </div>
        </div>
        <div class="gmail_default" style="font-size:small">' This gives
          the following error..<br>
        </div>
        <div class="gmail_default" style="font-size:small">' MMain.?.0:
          #6: Type mismatch: wanted Float, got String instead</div>
        <div class="gmail_default" style="font-size:small">
          <div class="gmail_default" style="font-size:small">
            <div class="gmail_default" style="font-size:small">Print
              "Val = " & (iVal + 1)  ' this works and prints 'i = 2'</div>
            <div class="gmail_default" style="font-size:small">Cheers</div>
            <div class="gmail_default" style="font-size:small">BruceS<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    BruceS,<br>
    <br>
    I guess the problem is ambiguity between the numeric addition /
    string concatenation "+" operator and the numeric parameters
    supplied.<br>
    The "&" expects and returns strings, the "+" expects and returns
    either numbers or strings.<br>
    So you seem to have a string/number salad in <br>
    <br>
    Print "Val = " & iVal + 1<br>
    <br>
    I guess the interpreter sees the "&" and "+" as having the same
    priority, so it works left to right:<br>
    There's a string ("Val = "), then concatenate a number-coerced-to
    -string (iVal), and then, to that result (a string), ADD a number...
    That's not possible: TYPE MISMATCH.<br>
    When the parenthesis are inserted, they give the "+" numeric
    operator priority over the "&" string operator and the numeric
    result is coerced to string: It works.<br>
    <br>
    I like clarity (sometimes too much, I confess); I would have used<br>
    <br>
    Print "Val = " & CStr(iVal + 1)<br>
    <br>
    And that should not fail.<br>
    <br>
  </body>
</html>