gpt4 book ai didi

使用 va_arg 转换 char

转载 作者:行者123 更新时间:2023-11-30 18:30:54 26 4
gpt4 key购买 nike

我需要从 va_arg 获取一个字符。我使用一个整数,但我的问题是它不起作用!

char c = (char)va_arg(ap, int);
write(1, &c, 1);

它给出了其他东西的ascii代码。

最佳答案

可变参数函数的参数(与声明中的 ... 相对应的参数)经历默认参数提升

小于 int 的整数参数晋升为int (或者如果类型是无符号且其最大值超过 unsigned int ,则为 INT_MAX ),以及类型为 float 的参数晋升为double .

所以你无法获得 char来自va_arg() 。显而易见的

char c = va_arg(ap, char); // DON'T DO THIS

有未定义的行为。

你在做什么:

char c = (char)va_arg(ap, int);

看起来是正确的,尽管 (char) Actor 是不必要的; int结果将隐式转换为 char无论如何。

例如,这个程序的输出是 c = 'x' :

#include <stdio.h>
#include <stdarg.h>

void func(int first, ...) {
va_list ap;
va_start(ap, first);
char c = va_arg(ap, int);
va_end(ap);
printf("c = '%c'\n", c);
}

int main(void) {
func(42, 'x');
}

您需要更新您的问题以描述实际问题是什么。你说“它给出了其他东西的ascii代码”;我不知道这意味着什么。

关于使用 va_arg 转换 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28308294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com