c1 如何在 va_arg 中取这个值?
How c1 is taking this values in va_arg?
我不明白 c1 是如何打印 65, 66, 67, 68 的。我知道 char c 是如何打印 A B C D 的,但是 c1 是如何输出奇怪的?
#include<stdio.h>
#include<stdarg.h>
void display(int num, ...);
int main()
{
display(4, 'A', 'B', 'C', 'D');
return 0;
}
void display(int num, ...)
{
char c, c1; int j;
va_list ptr, ptr1;
va_start(ptr, num);
va_start(ptr1, num);
for(j=1; j<=num; j++)
{
c = va_arg(ptr, int);
printf("%c", c);
c1 = va_arg(ptr1, int);
printf("%d\n", c1);
}
}
这不是一个奇怪的输出。您在 printf("%d\n", c1);
中提到格式说明符为“%d”。 “%d”是整数格式说明符。因此,变量 c1 被隐式类型转换为整数,即字符的 ASCII 值。因此,在您的情况下,它将 'A' 打印为 65,将 'B' 打印为 66 等
请参阅 fprintf()
中的转换说明符主题
我不明白 c1 是如何打印 65, 66, 67, 68 的。我知道 char c 是如何打印 A B C D 的,但是 c1 是如何输出奇怪的?
#include<stdio.h>
#include<stdarg.h>
void display(int num, ...);
int main()
{
display(4, 'A', 'B', 'C', 'D');
return 0;
}
void display(int num, ...)
{
char c, c1; int j;
va_list ptr, ptr1;
va_start(ptr, num);
va_start(ptr1, num);
for(j=1; j<=num; j++)
{
c = va_arg(ptr, int);
printf("%c", c);
c1 = va_arg(ptr1, int);
printf("%d\n", c1);
}
}
这不是一个奇怪的输出。您在 printf("%d\n", c1);
中提到格式说明符为“%d”。 “%d”是整数格式说明符。因此,变量 c1 被隐式类型转换为整数,即字符的 ASCII 值。因此,在您的情况下,它将 'A' 打印为 65,将 'B' 打印为 66 等
请参阅 fprintf()
中的转换说明符主题