你说得对,格式字符 `%md` 中的 `m` 不能为负数。因为 `%md` 表示输出一个整数,并且占据 `m` 个字符的宽度,如果 `m` 是负数,那么就会出现错误。
例如,下面的代码中,使用了 `%-5d` 格式字符输出一个整数,表示占据 5 个字符的宽度,并且左对齐:
```c
int num = 123;
printf("%-5d", num);
```
输出结果为:
```
123
```
如果将 `-5` 改为 `-10`,则输出结果为:
```
123
```
如果将 `-10` 改为 `10`,则输出结果为:
```
123
```
但是,如果将 `-10` 改为 `-10`,则编译器会报错,因为它不允许负数作为格式字符 `%m` 中的 `m`。