【发布时间】:2020-01-12 18:21:33
【问题描述】:
Total C 新手在这里。当我运行以下代码时:
int main(int argc, char *argv[])
{
int unsigned x = 1;
printf("%d\n", x);
x = x - 2;
printf("%d\n", x);
}
我得到了输出:
1 -1
即签名输出。
编译命令是cc -Wall -g -fno-stack-protector exCurrent.c -o exCurrent,我在最近的 macOS 10.14 上运行它。
发生了什么事?
【问题讨论】:
-
printf 不知道传递参数的类型。它从格式字符串中推断出它们。
-
尝试传递
%u
标签: c