【发布时间】:2020-10-31 19:23:19
【问题描述】:
当我运行以下程序时:
void func(unsigned short maxNum, unsigned short di)
{
if (di == 0) {
return;
}
char i;
for (i = di; i <= maxNum; i += di) {
printf("%u ", i);
}
printf("\n");
}
int main(int argc, char **argv)
{
func(256, 100);
return 0;
}
这是一个无限循环,但我想知道当 char 与 unsigned short 进行比较时,char 是否会转换为 unsigned short?在这种情况下,char 溢出并且大于 maxNum。我真的不知道如何解释这个程序的结果。
【问题讨论】:
-
我猜
char没有翻译成unsigned short。 -
@Lucas 是的,char 和 unsigned short 都被转换为有符号的 int....令人惊叹的