<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/56245>56245</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            clang-format --length behavior
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          shymanelaw
      </td>
    </tr>
</table>

<pre>
    From the documentation:

`--length=<uint>                - Format a range of this length (in bytes).`

The way I read this is that a piece of text that is equal to the number of bytes will be formatted.

I've counted the number of bytes for the first 2 lines (I know there is a `--lines` option, it's just an example):

- with `microsoft` style, only those 2 lines are formatted;
- with `gnu` and `mozilla` styles the whole function is formatted.

I can't figure it out. Styles have the same options, but use different values. 

Is this specific to the formatting options, or a `--length` behavior I don't fully understand?

```c
int get_number(
        int x, int y, int z)
{
        if (x > y) { return x + y + z; }
        else
        {
                return x - y - z;
        }
}

int main(void){
        return 0;
}
```

```bash
clang-format --version
# clang-format version 14.0.0

# Show the number of bytes for the first 2 lines
head -n 2 example.c | wc -c
# 38

# Microsoft style
clang-format --style=microsoft --length=38 example.c

// int get_number(int x, int y, int z)
// {
//     if (x > y) { return x + y + z; }
//      else
//      {
//              return x - y - z;
//      }
// }

// int main(void){
//      return 0;
// }

# GNU style
clang-format --style=gnu --length=38 example.c

// int
// get_number (int x, int y, int z)
// {
//   if (x > y)
//     {
//       return x + y + z;
//     }
//   else
//     {
//       return x - y - z;
//     }
// }

// int main(void){
//      return 0;
// }

# Mozilla style
clang-format --style=mozilla --length=38 example.c

// int
// get_number(int x, int y, int z)
// {
//   if (x > y) {
//     return x + y + z;
//   } else {
//     return x - y - z;
//   }
// }

// int main(void){
//      return 0;
// }
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy9VsGSmzgQ_Rp86YLCYBv7wGFnHKfmkFySPW8JEKCskBwk2eP5-rQQ2JixN97dVCjKRmr16-73WqBMFqd018oGdE2hkLlpqNBEMym8-A8v3Hrh8LsKfZ9TUenai7de_GyY0F78ASaXDzvZNkQDgZaIioIsEZspcL7gRWsmIDtpqrxoEyDsOMpXzOJITvACLSWFc8Rb1x3gntHcAdJX7SbRSL8bwkHLrgRhmoy2dk0XAo6Mc8golF1SmhbBONyLFyUHCrk0Ak03AdCxmy9ZqzREwJnAWaziBf4W8mhtLbVpEHAUWTs-gdx3LEbPwDSGUfDNIAARQF9Js-cUq59Q7GO2lqFV2LC8lUqW2gIpfbKrn0EKfsJ4UtFzHqQdlebFT1OgShgLQUTRwco3pIOcQVVX2bGWHFGMyG3CtpQ7ZEFOsJ5EIxeVsUVrkEYH8MVh1QSptICKNLQvX9m8M6PBYNIFK0skS2g4EG6oCuAKXjm51Z7mrGT5oGifDBPVGBNVGQh3PYk1ZRRTYGh5wU7uMzUcOTOioKgesuDFu0lTuzt3Y2xpqKj-yzUBijws3ljLaycmPpyGhzcroluSPF3WlrY_XsHuDly6ATRiP2vTCsDZ6AlO3e8bCoa27dmRckXPgzEi3md_H739zne0dMC4gA3lNIQhFeuDZIVNdgTaI4YXpLP3QMtNrjKiajeVc9zhvhMIfP-AJNuWd8ujGK7svRXmiyAMrpFx6Zfa7aXH9p_zq-0rwhc42W-pIEc6n-GYg59foOP1NNinYXv1e-tWMc4Sb89bEUavv3h9CXkNvsMb3rXRT7vH-V3UcWN7_cdm6gGveuo8N43zsw4bOU7wr_ttVP69tjtDve--O5AxfPz85wNC4avu30l0Nb7IBf9Hr6la7-S8JTHc0_OG93Yy907eB4Lc0fdWgN8j8Cf3XXpkN_Yrf4XQv1Lnm5Q_piry0an4zxB3Nfutig2fgFmRxsUm3pCZZprTdKJWf9Qbvscz0_K01nqv7IGnw6zwfGKyIJcNDjg_DH_-vpXfaI4Hph1Tytgz4m65ihbLWZ2GxSKmZRwv4niZ0ZDQhJab9WY-T-b5MkuKGScZEpl6yycvigQ9QgeBz95yO2NpFEZRuIqSeRxF83mwjpareZJky9VmGa2TyFuEFCnigc0jkG01a9MupcxUCo2cKa0uRqIUqwSlXTjEJwZPZm2q6lNDBOXkOOuip132PwA-YjMR">