C语言的学习

所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式。不同的类型分配不同的长度和存储形式。

C语言允许使用的类型如下图,图中有*的是C99所增加的。


整型(int):

在存储单元中的存储方式:用整数的补码(complement)形式存放。一个正数的补码是此数的二进制形式,如5的二进制形式是101,如果用两个字节存放一个整数,则在存储单元中数据形式如下图所示。如果是一个负数,则应先求出负数的补码。求负数的补码的方法是:先将次数的绝对值写成二进制形式,然后对其后面所有各二进位按位取反,再加1.如-5的补码见下图。



在存放整数的存储单元中,最左面一位是用来表示符号位的,如果该位为0,则表示数值为正;如果该位为1,则表示数值为正。

整型数据常见的存储空间和值的范围


字符型数据的存储空间和值的范围


实型数据的有关情况


1)可以在常量的末尾加专用字符,强制指定常量的类型。如在3.1415926后面加字母F或f,就表示是float型常量,分配4个字节。如果在实型常量后面加大写或小写L,制定此常量为long double类型。如:


2)基本的算术运算符


3)自增、自减运算符

作用是使变量的值加1或减1,例如:

++i,--i(在使用i之前,先使i得值加(减)1)

i++,i--(在使用i之后,使i的值加(减)1)

注意:自增运算符(++)和自减运算符(--)只能用于变量,而不能用于常量或表达式。

4)不同类型数据间的混合运算

如果一个运算符的两侧的数据类型不同,则先自动进行类型转换,使二者具有用一种类型,然后再进行运算。因此整型、实型、字符型数据间可以进行混合运算。规律为:

A、+、-、*、/运算的两个数中有一个为float或double型,结果为double型,因为系统将所有float型数据都先转换为double型,然后进行运算。

B、如果int型与float型或double型数据进行运算,先把int型和float型数据转换为double型,然后进行运算,结果为double型。

C、字符(char)型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算。如12+'A',由于字符A的ASCII代码是65,相当于12+65,等于77。字符数据可以直接与整型数据进行运算。如果字符型数据与实型数据进行运算,则将字符的ASCII代码转换为double型数据,然后进行运算。

5)强制类型转换运算符


可以利用强制类型转换运算符将一个表达式转换成所需类型。例如:

(double)a(将a转换成double型)

(int)(x+y)(将x+y的值转换成int)

(float)(5%3)  (将5%3的值转换成float型)

其一般形式为:

(类型名)(表达式)

6)C运算符


两个整数相除,其值为整数。如:5/3值为1

除数、被除数有一个为负值时,结果“向零取整”   如:-5/3值为-1

除数、被除数有个一个为实数时,结果为double型。

%(模运算符、或称求余运算符):%两侧均为整形数据  如:7%4的值为3

-7%4,7%-4,-7%-4的值分别为多少?    为-3,3,-3  注意:取余值的符号由被除数决定。

7)格式的输出:

float f = 32.345;

printf("f=%5.1f\n",f);

其中,则输出结果为:32.3.


注意:对于单精度数,使用%f格式输出时,仅前7位是有效数字,小数6位;

    对于双精度数,使用%lf格式输出时,仅前16位是有效数字,小数6位。

说明:

编译程序只是检查printf函数的调用形式,不分析格式控制字符串,如果格式字符与输出项的类型不匹配,不进行类型转换,输出结果为随机。

如:

你可能感兴趣的:(C语言)