gpt4 book ai didi

c++ - C和C++中将int值转换为char指针的区别

转载 作者:太空宇宙 更新时间:2023-11-04 06:49:07 25 4
gpt4 key购买 nike

我编写了以下代码将 int 值转换为 char 指针,这在 C 中有效。

int i = 54;
char *ii;
ii = &i;
printf("%d\n", *ii);

输出是:

54

当我用 C++ 编写相同的代码时,它不起作用。

int i = 54;
char *ii;
ii = (char *)&i;
cout<<*ii;

输出是:

6

谁能解释一下为什么会这样,我应该如何让它在 C++ 中工作。

提前致谢。

最佳答案

当您调用 printf 时像这样:

printf("%d\n", *ii);

%d格式说明符表示给定的 int参数将打印为 int .即使您传递的是 char ,因为 printf是一个可变参数函数,它被提升int , 所以它匹配格式说明符。

当您使用 cout 输出时:

cout<<*ii;

<<运算符对 char 有重载.由于右侧的类型为 char ,这是使用的过载。 << 的特定实例将参数打印为 char .由于 ASCII 码 54 对应字符 '6' , 这就是打印的内容。

如果你使用 %c,你会得到相反的结果在printf格式,如果你投 *iiintcout打电话。

关于c++ - C和C++中将int值转换为char指针的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54052783/

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