焦糖橙子 发表于 2018-1-23 22:38:04

程序输出问题,求助各位大神

这个程序中的a输出的为什么是107而不是8
c2输出的为什么是B


#include<stdio.h>
void main()
{
        int a,b=322;
        float x,y=8.88;
        char c1='k',c2;
        a=y;
        x=b;
        a=c1;
        c2=b;
        printf("%d,%f,%d,%c\n",a,x,a,c2);
}

ba21 发表于 2018-1-23 23:46:55

#include<stdio.h>
void main()
{
      int a,b=322;
      float x,y=8.88;
      char c1='k',c2;

      a=y;
      x=b;
      a=c1;
      c2=b;
      printf("%d,%f,%d,%c\n",a,x,a,c2);


                printf("%c \n",322); // c2=b 关系 char = int把一个整型322赋值给字符c2;这句直接用322以%c输出得B
               
}

549444387@qq.co 发表于 2018-1-24 09:40:57

#include <stdio.h>

int main(void)
{
        int a, b = 322;
        float x, y = 8.88;
        char c1 = 'k', c2;
        a = y;//先将y的值赋给a,因为类型不同,会造成数据的丢失,即现在a的值为8
        x = b;//将b的值赋给了x, x为浮点型,所以输出为322.000000
        a = c1;//又将c1的值重新赋给了a,a为整型,c1为字符型,但整型和字符型存储方式是相同的,所以这里相当于给a赋值为k的ASCII值: 65
        c2 = b;//同理,b为322,即此时的c2也为322,但c2为字符型,所以输出的是ASCII 322所对应字符,查表可知, c2是'B'.
        printf("%c %d\n%f\n%c %d\n", a, a, x, c2, c2);
        return;
}
一起沟通交流

549444387@qq.co 发表于 2018-1-24 09:41:52

k 107
322.000000
B 66
请按任意键继续. . .




焦糖橙子 发表于 2018-1-24 10:57:37

549444387@qq.co 发表于 2018-1-24 09:40
#include

int main(void)


ASCII码中的B不是66吗?为什么ASCII一共127可以输出322的字符?

549444387@qq.co 发表于 2018-1-24 11:23:51

ASCII码一共有255个字符, 如果超过的话应该是从新开始的, 即256是0 我试验过是正确的。你可以找一下ASCII码与常用字符的对照表就可以了
#include <stdio.h>


void main()
{
        char c;
        int i = 257;
        c = i;
        printf("%c\n", c);
}

你可以运行一下这个 结果对应的是ASCII码001对应的字符

起了很久的名字 发表于 2018-1-24 14:48:52

这个知识点是int和char的取值范围

焦糖橙子 发表于 2018-1-24 18:22:48

549444387@qq.co 发表于 2018-1-24 11:23
ASCII码一共有255个字符, 如果超过的话应该是从新开始的, 即256是0 我试验过是正确的。你可以找一下ASCII ...

{:10_254:}谢谢指教

549444387@qq.co 发表于 2018-1-25 09:53:20

焦糖橙子 发表于 2018-1-24 18:22
谢谢指教

我也是刚学C没多久 一起学习吧 感觉学C必须要亲自打出来验证自己的想法才行
页: [1]
查看完整版本: 程序输出问题,求助各位大神