zoukankan      html  css  js  c++  java
  • C Primer Plus(三)

    第三章数据和C

    3.1示例程序

    1. #include<stdio.h>
    2. int main(void)
    3. {
    4. float weight,value;
    5. scanf("%f",&weight);
    6. value=770*weight*14.5833;
    7. printf("Your weight in rhodium is worth $%.2f.\n",value);
    8. return 0;
    9. }

    3.2变量与常量数据

    有些数据可以在程序使用之前预先设定并在整个运行过程中没有变化,这称为常量。另外的数据在运行过程中可能变化或被赋值,这被称之为变量。
    变量的值可以在程序执行过程中变化与指定,而常量则不可以。

    3.3数据:数据类型关键字

    常量数据,编译器一般通过其书写来辨认其类型。
    变量则需要在声明语句中指定其类型。
    K&R C给出的7个数据类型相关的关键字:int,long,short,unsigned,char,float,double;
    c90  给出的2个数据类型相关的关键字 :signed,void;
    C99 给出的3个数据类型相关的关键字 :_Bool,_Complex,_Imaginary;(布尔值,复数,虚数)

    整数   :没有小数部分的数,以二进制数字存储。
    浮点数:加了小数点的值是浮点型值,浮点数表示法将一个数分为小数部分和指数部分分别存储,它的表示范围比整数大得多,进行算术运算会损失更多精度,通常比整数运算慢。

    3.4C数据类型

    C的各种整数类型的区别在于所提供数值的范围,以及数值是否可以取负值。
    初始化变量就是为变量赋一个初始值。
    声明语句为变量创建、标定存储空间并为其指定初始值。

    int类型
    int类型是有符号整数,其取值范围依赖于计算机系统,一般地,int类型存储在计算机的一个字中。ISO/ANSI C规定int类型的最小范围是-32768到32767。
    C把不含小数点和指数的数当作整数。
    前缀0x或者0X表示使用十六进制值,前缀0表示使用八进制。
    使用不同数制系统的选择是为了方便而提供,它并不影响数字的存储(二进制编码进行存储)。
    %d显示十进制数字,%o显示八进制数字,%x显示十六进制数字。如果想要显示C语言前缀,可以使用说明符%#o、%#x、%#X分别生成0、0x和0X前缀。注意(o非0);
    其它整数类型
    short int     类型:可能占用比int类型更少的存储空间,是一种有符号类型。
    long  int      类型:可能占用比int类型更多的存储空间,是一种有符号类型。
    long long int类型:可能占用比long类型更多的存储空间,是一种有符号类型。(C99中引入)
    unsigned int类型:只能表示非负值,可以表示更大的数值。
    C90中引入了unsigned long int和unsigned short int。
    C99中引入了unsigned long long int。

    单独的unsigned等价于unsigned int。
    如果是在long类型等于int类型的系统中编写代码,当确实需要32位整数时,应使用long类型,以便程序移植到16位机器上后仍然可以正常工作。
    使用short类型可以节省存储空间,此外计算机中的一些硬件寄存器是16位的。

    整数溢出的时候将从最小值开始。

    如果希望把一个较小的常量作为long类型对待,可以使用l或L后缀。同理ll或LL适用于long long。ull,LLU,Ull用于标识unsigned long long。

    要打印unsigned int数字可以使用%u符号。打印long数值,可以使用%ld格式说明符。对short类型可以使用h前缀。

    在C中常量后缀可以使用大写和小写,但格式说明符只能使用小写字母。 

    char类型
    char类型用于存储字母和标点符号之类的字符,char类型实际存储的是整数而不是字符(特定的整数表示特定的字符,ASCII码中65表示A,97表示a)。
    C把一个字节定义为char类型使用的位数。
    ‘A’,单引号中的一个字符是C的一个字符常量。不使用单引号会将其视为一个变量名,使用双引号,会视为一个字符串。
    使用ASCII码时要注意数字和数字字符的区别。字符4的ASCII码值为52,写法‘4’表示符号4而不是数值4。
    一些C实现把char当作有符号类型,另一些则当作无符号类型,可以通过limits.h头文件检查这一信息。

    _Bool类型
    C99中引入,实际上是一种整数类型,仅需要1位来进行存储。

    float、double和long double类型
    float类型必须至少能表示6位有效数字。double类型必须至少能表示10位有效数字。
    一个浮点常量最基本的形式是:包含小数点的一个带符号的数字序列,接着是字母e或E,然后是代表10的指数的一个有符号值。例如-1.56E+12,2.87e-3。
    可以省略正号,可以没有小数点或指数部分,但不能同时没有二者,在浮点常量中不要使用空格。
    默认情况下,编译器将浮点常量当作double类型。你可以通过f或F后缀使编译器把浮点常量当作float类型。
    C99为表示浮点常量添加了一种十六进制格式。前缀使用0X/0x,接着十六进制数字,然后是p/P,最后是2的指数。
    例如0xa.1fp10。啊是10,.1f表示1/16加上15/256,p10表示2的10次方。十进制为10364.0。

    float和double类型的输出都使用%f,%e,%a说明符。(a代替e)

    类型大小
    C的内置运算符sizeof以字节为单位给出类型的大小。例如printf("int has a size of %u bytes.\n",sizeof(int))。
    因为C把char类型的长度定义为1个字节,所以在char类型长为16位,double类型长为64位的系统中,sizeof将报告double类型有4字节长。

    3.5使用数据类型

    C语言对待类型不匹配现象更宽容,C编译器允许二次初始化,但是会给出警告。
    当为某个数值类型的变量进行初始化时,如果使用了其它类型的值,C会自动对该值进行类型转换以便和变量类型匹配,但可能丢失部分数据。
    使用%d显示float值不会把该float值转换为近似的int值,而是显示垃圾值。类似,使用%f显示int值也不会把该int值转换为浮点值。

    3.6刷新输出

    printf()语句将输出传递给一个被称为缓冲区的中介存储区域,缓冲区的内容再不断地被传递给屏幕。
    标准C规定在以下几种情况将缓冲区内容传递给屏幕
    1.缓冲区满的时候2遇到换行符的时候3需要输入的时候。
    将缓冲区内容传递给屏幕或文件称为刷新缓冲区。

    question:假设ch为char类型变量。使用转义序列、十进制值、八进制字符常量以及十六进制字符常量等方法将其赋值为回车符。(假设使用ASCII编码值)

    answer:ch='\r';ch=13;ch='\015';ch='\xd';

  • 相关阅读:
    Java实现 N的阶乘
    Java实现 N的阶乘
    Java实现 N的阶乘
    Java实现 N的阶乘
    Java实现 洛谷 P1015 回文数(N进制回文数)
    Java实现 洛谷 P1015 回文数(N进制回文数)
    Java实现 洛谷 P1015 回文数(N进制回文数)
    Java实现 洛谷 P1015 回文数(N进制回文数)
    Java实现 洛谷 P1015 回文数(N进制回文数)
    Windows线程生灭(图文并茂)
  • 原文地址:https://www.cnblogs.com/tuifeideyouran/p/3099668.html
Copyright © 2011-2022 走看看