c - 可以直接投写吗?

标签 c unistd.h

当我创建自己的 malloc 时,我使用 write 来打印一些值。

我在打印值时没有任何问题,我只是创建了一个 char 变量来存储我的号码并打印它,但我不明白为什么转换不起作用。 write的原型(prototype)是:

ssize_t write(int fd, const void *buf, size_t count)

所以我在 void * 中投了我的号码,但没有任何结果。

int nb = 3;
char numb = nb + '0';

write(1, (void *)(nb + '0'), 1); // Display nothing
write(1, &numb, 1); // Display 3

有人能解释一下为什么第一次写什么都不显示吗?

最佳答案

是的,但它不是强制转换,而是复合文字:

write(1, (char[]){nb + '0'}, 1);

或:

write(1, &(char){nb + '0'}, 1);

关于c - 可以直接投写吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54349814/

相关文章:

c - char *derp[20] 是什么意思?

c - 在像 touch.c 这样的 FreeBSD 代码中,以美元符号作为第一个和最后一个字符的 RCSID 是什么意思?

在 C 中动态分配的数组上调用 free() 似乎正在更改存储在另一个数组中的数据?

无法运行两次execl

c - 我正在为披萨外卖系统编写这段代码。从命令提示符运行时,它显示错误。我应该如何运行它?

C Argv 检查哪个 argv 路径来自哪个输入

c++ - unistd.h read() 正在读取更多数据然后被写入

c - 从 perf 获取用户空间堆栈信息

linux - execl 使 C++ node.js 插件崩溃

C:传递二维数组的一维会导致段错误