【问题标题】:How to get output in integer instead of ASCII code value [duplicate]如何以整数而不是ASCII码值获取输出[重复]
【发布时间】:2020-01-03 17:00:48
【问题描述】:

我正在执行这个程序 输出为 ASCII 码值的 104。 它以 ASCII 值给出值,但我怎样才能得到数字输出

void main()

{
    char ch1 , ch2, sum;

    ch1 = '2';
    ch2 = '6';
    sum = ch1+ch2;
    printf("sum = %d ", sum);
    getch();
}

【问题讨论】:

  • 您能描述一下您期望的输出吗?你在找它打印 8 吗?
  • 你问“我怎样才能得到数字输出” - 但104 是一个数字。这不是您期望的数字吗?你期待什么?确定不是8'2' 是十进制值为 50 的 ASCII 字符,而 '6' 是十进制值为 54 的 ASCII 字符。50 + 54 == 104。如果您打算添加 26,那么您应该有ch1 = 2; ch2 = 6;,以便您将十进制数值分配给您的变量而不是ASCII字符代码。

标签: c char ascii integer-promotion


【解决方案1】:

只需使用表达式

sum = ch1 - '0' + ch2;

然后

printf("sum = %c ", sum);

这是一个演示程序

#include <stdio.h>

int main(void) 
{
    char ch1 , ch2, sum;

    ch1 = '2';
    ch2 = '6';
    sum = ch1 -'0' + ch2;

    printf( "sum = %c\n ", sum );
    //            ^^^ 

    return 0;
}

它的输出是

sum = 8

另一种方法如下

#include <stdio.h>

int main(void) {
    char ch1 , ch2, sum;

    ch1 = '2';
    ch2 = '6';
    sum = ch1 -'0' + ch2 - '0';

    printf( "sum = %d\n ", sum );
    //            ^^^ 

    return 0;
}

至于你的代码,那么在这段代码 sn-p

ch1 = '2';
ch2 = '6';
sum = ch1+ch2;

表达式ch1+ch2 的求值类似于50 + 54(如果使用字符的ASCII 编码)

【讨论】:

    【解决方案2】:

    我认为%c 是您要查找的说明符。

    【讨论】:

    • 这就是打印字符的方式,但问题之一是运算是用字符完成的,而不是它们所代表的整数值。
    • 啊,你真的很想打印8.. 以为我得到了你的问题,但好吧.. 我没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 2015-04-07
    • 2023-04-09
    • 1970-01-01
    • 2013-12-31
    • 2011-06-27
    相关资源
    最近更新 更多