当我创建自己的 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/