提问者:小点点

如果我使用了错误的格式说明符,会发生什么情况?


只是想知道当我在 C 中使用错误的格式说明符时会发生什么?

例如:

x = 'A';
printf("%c\n", x);
printf("%d\n", x);

x = 65;
printf("%c\n", x);
printf("%d\n", x);

x = 128;
printf("%d\n", x);

共2个答案

匿名用户

当我在 C 中使用错误的格式说明符时会发生什么?

一般来说,未定义的行为。*

但是,回想一下,printf 是一个可变参数函数,并且可变参数函数的参数会经历默认的参数提升。例如,字符被提升为 int。因此,在实践中,这些都将给出相同的结果:

char x = 'A';
printf("%c\n", x);

int y = 'A';
printf("%c\n", y);

而这是未定义的行为:

long z = 'A';
printf("%c\n", z);

如果任何参数不是相应转换规范的正确类型,则行为未定义。

匿名用户

由于 x 是 A,因此第一个打印 f 将打印:“A”。

第二个将打印 A 的 ascii 值(查找)。

第三个将打印 65 的 ascii 字符(我认为这是 A 或 a,但它是一个字母)。

第四个将打印 65。

第 5 个将打印 128。