您的位置:首页 > 编程语言 > C语言/C++

03:C语言数据类型、变量的输入和输出、进制转换、操作符

2016-09-23 21:56 453 查看
l   数据类型

C语言程序中允许程序员扩展新的数据类型。→复合数据类型(先定义后使用)

布尔类型是C99规范中引入的新的数据类型,只包含了两个数字,一个是真(1),一个是假(0)

任何一个整数均可当作布尔值来使用,0当作布尔值使用时为假,其他整数当布尔值时为真。

一般程序中不需要使用这个数据类型,直接用整数代替就可以。

数据类型和占位符的对应关系:

       char    unsigned char            %c

       short                                         %hd

       unsigned short                          %hu

       long                                                 %ld

       unsigned long                           %lu

       int                                             %d

       unsigned int                              %u

       float                                          %f %g

       double                                      %lf %lg

%f和 %lf 会保留小数点后面的多条的0;

%g和 %lg 不会保留。

不同数据类型的一个主要区别就是存储区里包含的字节数不同。

       sizeof  (关键字可以用于计算一个存储区或数据类型中包含的字节个数)

       char    unsigned char            1个字节

       short    unsigned short         2个字节

       long    unsigned long           4个字节

       int    unsigned int                4个字节

       float                                          4个字节

       double                                      8个字节

sizeof的小括号里可以写任何能当数字使用的内容。

sizeof如果修改了任何存储区里的内容,这个修改不会真正生效。

标准函数

       scanf  (可以把用户输入的数字记录在变量对应的存储区里)

       格式:scanf(“占位符”,&变量);  如scanf(“%d”,&num);

为了使用这个标准函数,需要包含stdio.h的头文件。

在scanf函数调用语句中要使用存储区地址表示存储区。

双引号里使用占位符表示存储区的类型。

在scanf函数语句中的双引号里不要写占位符以外的其他任何内容。

可以在一条scanf函数调用语句中得到多个数字。

如果用户输入的格式和程序要求的格式不一致,就不可能得到正确数字。

l   二进制

一个字节分成8段,每段只能记录一个0或者1。

要想把一个数字记录在一个字节中,就必须首先把这个数字拆分成8个0或者1。

使用一组0和1表示数字的方法,叫做二进制

计算机里只能采用二进制,任何一个数字既可以用二进制方式表示,也可以用十进制方式表示。

       二进制:00000000

         编号:7654 3210

某位置上的1代表数字2的位置编号的次方。如

       01000000    等于 2的6次方

       76543210

二进制如果两个相邻位置上的内容一样,则左边是右边的2倍。

用二进制表示的非负数符合以上规则。

二进制数字加1,则是把最右边的1变成0,把最右边的0变成1。

二进制表示的非负数转换十进制的时候,只需要把每个数位上的内容单独转换,最后求和即可。如:

       0000 0101 = 2² + 2º = 4 + 1 = 5

牢记:     2º=1  2¹=2  2²=4 2³=8  24=16  25=32  26=64  27=128

非负数的十进制转换二进制的方法:

       **** ****        12

       **** ***0        6

       **** **00        3

       **** *100       1

       **** 1100              0

       0000 1100

①不停除以2,保留整数部分;

②逐个对2进行取余;

③从右向左排列出来。

负数的十进制转化为二进制:

       ①得到负数的相反数;

       ②把第一步的结果转化成二进制;

       ③把第二部每个数位上的内容变成相反值;

       ④把第三步的结果加1。

       -14

        14         0

         7         1

         3         1

         1         1

         0         0

       0000 1110(从下往上,开头补0够8位)

   →1111 0001(+1)

   →11110010 (-14的二进制结果)

采用按位求反,再加1的方法,可以根据任何二进制计算出相反数的二进制。

有符号类型:二进制最左边的数字叫做符号位(符号位是0的数字为非负数,符号位是1的数字为负数)

负数的二进制转换十进制:

       ①首先计算出相反数的二进制;

       ②把第一步的结果转换成十进制;

       ③根据第二部的结果再计算相反数。

当我们把占地大的整数赋值给占地小的整数类型存储区的时候,只保留最后的二进制数位,这会导致数据丢失。

当我们把占地小的有符号类型整数赋值给占地大的整数类型存储区时扩展出来的二进制数位填充的都是符号位,这样会保持十进制结果不变。

把二进制从右向左每三个数位分成一组,每组用0~7之间的一个数字代替,这个结果叫做八进制

       0110 1010 → 01 101 010 → 152(八进制)

可以在程序中直接使用八进制表示数字,必须以0开头。

       152(八进制) → 0152(正确的八进制表示方式)

%o可以把数字的八进制表示方式打印在屏幕上。

把二进制数字从右向左每四个数位分成一组,每组用一个字符替换(a~f这6个字母代表10~15),这个结果叫做十六进制

       11001011 → cb(十六进制)

可以在程序中使用十六进制方式表示数字,必须以0x开头。

%x%X可以把数字的十六进制表示方式打印在屏幕上。(打印结果不是以0x开头的,需要自己加上,区别于十进制)

十六进制表达方式的占位符(x或X)决定了结果中十六进制的大小写。

l   操作符

操作符用来描述对数字的处理规则。

根据操作符所需的数字个数,把操作符分成:单目操作符、双目操作符、三目操作符。(变量也可以做数字用)

       +- * /  加减乘除四则运算

       除法计算均为正数,则结果只保留整数。

       %  表示取余操作

       =  表示赋值操作符,把数字记录到左侧的存储区里

可以在一语句中使用多个赋值操作符,先计算右侧的赋值操作符。

       num= num1 = 10; (从右侧先计算num1是10,然后num是num1所以也是10)

绝大多数双目操作符和赋值操作符合并形成符合操作符,例如+=,%=,复合操作符要求左边代表存储区,右边代表数字。

例1:

       num+= 1; (表达的就是num = num + 1;)

例2:

       num= 10;

       num *= 2 + 3;  (表达的就是 num = num * ( 2 + 3 ) → num = num * 5 → num = 10 *5 = 50)

       执行结果为 num是50。

复合赋值操作符的优先级和操作符的优先级一样低。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  标准C语言
相关文章推荐