如何进行类型转换?

时间:2010-11-15 03:21:07

标签: c

我有一个字符指针,我想显示一个整数值。那么以下陈述是正确的:

printf("%d",*(int *)ptr);

你可以解释一下吗?

3 个答案:

答案 0 :(得分:2)

如果字符指针(字符串)指向以字符串格式存储数字的有效C字符串,例如"123",则只需使用%s格式说明符。

printf("%s", ptr);

%d格式说明符用于打印存储为int类型的二进制有符号整数的数字。

答案 1 :(得分:0)

不,这通常是错误的,因为char只有1个字节,而int通常是4个字节。您访问的其余字节可能无效,具体取决于它指向的内容,这可能是未定义的行为。正确的方法是首先获取char值,然后将其转换为int

(int)*ptr

当然,在这种情况下,可能根本不需要显式转换,因为字符值将隐式地提升为整数。

答案 2 :(得分:0)

知道变量ptr被声明为什么类型会很有帮助。

如果声明为int * ptr;那么只需要去引用

即。 printf("%d",* ptr);

因为ptr的类型为int *,因此* ptr的类型为int,匹配%d

但是,我猜ptr被宣布为void * ptr;在你的例子中,在这种情况下 如果你知道它实际指向一个int,那么从通用指针转换 type to int *在取消引用之前是正确的。

即。 printf("%d",*(int *)ptr);