C语言--getchar()变量类型探究

作者: Easting_C | 来源:发表于2015-04-08 12:05 被阅读121次

getchar():在32位操作系统下,读取一个字节。
char:是c/c++整型数据中比较古怪的一个,在标准中是unsigned。编辑器可实现为带符号的,也可实现为不带符号的。
[程序1]

#include<stdio.h>
main()
{
    int c;  //定义为int类型
    c=getchar();
    while(c!=EOF)
    {
        putchar(c);
        c=getchar();
    }
    return 0;
}

[程序2]

#include<stdio.h>
main()
{
    char c; //定义为char类型
    c=getchar();
    while(c!=EOF)
    {
        putchar(c);
        c=getchar();
    }
    return 0;
}

对比以上两个程序可以发现,定义变量c的地方不同,其余都一样。EOF是结束符(End Of File,文件结束),值是必须足够大,除了能存储任何可能的字符外还要能存储文件结束符EOF。
char是signed的系统中:EOF的值是-1,读取中文时,,中断调试下,每次读取一个字节,定义为int时,变量c的值在0~127之外,>127,定义为char时由于char是signed,所以能识别负值,结果不受影响。
char是unsigned的系统中,变量c定义为int时,没有问题,如果为char时,由于不接受负值,会出现问题。
所以综合考虑,建议使用定义int型,保证程序兼容性。

相关文章

  • C语言--getchar()变量类型探究

    getchar():在32位操作系统下,读取一个字节。char:是c/c++整型数据中比较古怪的一个,在标准中是u...

  • C语言内存

    在阐述C语言内存布局之前,首先我们来介绍一下C语言变量的类型;在C语言中的变量类型有自动变量,全局变量,静态变量以...

  • C#语言入门详解006

    006 C#类型、变量与对象详解 目录 *什么是类型*类型在C#语言中的作用*C#语言的类型系统*变量、对象与内存...

  • 二、编程中基础知识

    1、强类型语言与弱类型语言 变量需要先定义,然后才能使用,这种叫做强类型语言,比如c,c++,Java等。变量不需...

  • 如何得到C语言表达式的类型

    C语言允许两个不同整数类型的变量,如char类型变量与int类型变量相加。C语言标准称之为整型提升。那么我们如何通...

  • C语言14 指针类型

    C语言14 指针类型 指针是C语言中的一种数据类型, 定义带 "*"类型的变量 总结: 任何带有*的变量类型的标...

  • 语言种类

    1.强类型语言和弱类型 弱类型语言允许将一块内存看做多种类型。比如直接将整型变量与字符变量相加。C and C++...

  • C语言变量类型

    C语言变量类型 auto static external static external register aut...

  • 2018-05-13

    C语言:c语言中没有字符串类型,也没有字符串变量,字符串是放在字符型数组中的。 C语言数变量类型:整型、浮点型、v...

  • iOS有哪些数据类型/基本数据类型?

    简述 本文主要探究使用OC作为iOS开发语言时,我们能使用哪些数据类型。 一切类型始于C。 C语言的类型 基本数据...

网友评论

本文标题:C语言--getchar()变量类型探究

本文链接:https://www.haomeiwen.com/subject/ktbzxttx.html