首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将浮点数类型转换为字符

将浮点数类型转换为字符
EN

Stack Overflow用户
提问于 2021-12-14 06:48:06
回答 2查看 118关注 0票数 0

我正在自学C,并在尝试打字。我试图将float类型为char,这是我的代码:

代码语言:javascript
复制
# include <stdio.h>
int main() {
  float a = 3.14;
  int c = 3;
  int d;
  d = (int)a*c;
  printf("I am printing a typecasted character %c", (char)d);
  return 0;
}

我得到的输出是:

代码语言:javascript
复制
$ clang-7 -pthread -lm -o main main.c
$ ./main
I am printing a typecasted character $

这个角色从来没有印出来,我也不知道出了什么问题。请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-14 06:58:52

在我看来一切都很好!

为了更好地了解发生了什么,除了%i之外,还可以将其作为%c打印出来,这样您就可以看到十进制数的值是什么。

(给我跑跑)

代码语言:javascript
复制
#include <stdio.h>

int main(){
    float a = 3.14;
    int c = 3;
    int d;
    d = (int)a*c;
    printf("I am printing a typecasted character, \"%c\", or signed decimal "
           "number \"%i\".\n", (char)d, (char)d);
    return 0;
}

输出:

我正在打印一个打过字的字符“",或有符号的十进制数"9”。

查找ASCII表中的十进制数9,我看到它是"HT",\t,或“水平标签”。那就是你印的。效果很好。

@一些程序员有一个很好的评论也值得指出:

稍微吹毛求疵一点:您不会将浮点值转换到任何地方的char。在(int)a*c中,您将float变量a转换为int。乘法是整数乘法。整数结果存储在整数变量d中。然后将这个整数变量转换为一个char,但无论如何,它都将被提升为int

票数 2
EN

Stack Overflow用户

发布于 2021-12-14 06:56:49

为其他变量添加一些额外的调试可以说明为什么是这样的:

代码语言:javascript
复制
#include <stdio.h>
int main() {
    float a = 3.14;
    int c = 3;
    int d;
    d = (int)a*c;
    printf("I am printing a typecasted character %c, %f, %d, %d", (char)a, a, c, d);
    return 0;
}

输出:I am printing a typecasted character , 3.140000, 3, 9

字符9不在可打印的ASCII范围内,因此没有任何有用的打印。

从您的问题中还不清楚您期望的是什么,但是您可能是指格式字符串中的%d吗?或者,您可能希望从可打印范围(char)a + 32(char)a+'0'或其他方面开始。

还要注意:这些类型中的很多都是较小的类型,因此有很好的机会解决问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70344733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档