《C程序设计》课程学习(3)——第三章 数据类型、运算符与表达式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_34573534/article/details/102633609

3.1  基本概念

1.标识符

用来标识变量名、函数名、数组名等的有效字符序列称为标识符。

规则:

1.必须以英文字母或下划线开头,其后可以跟英文字母、数字和下划线。

2.不能用系统的保留字。

3.标识符的长度不超过8个字符。

4.区分大小写。

例:

sum, x, _price, a8都是合法的标识符

x+y, 2g, n*y,int等都是非法的标识符

此外,命名时,应做到“见名知意”。如: day,sum

2.常量

在程序运行过程中,其值不能被改变的量。

3.变量

在程序运行过程中,其值可以改变的量。变量只有一个名字,必须先声明后使用。

3.2  C的数据类型

3.3  常量

1.  整型常量(整常数)

(1) 十进制整数:78         -324           0    

(2) 八进制整数:以0开头,如0123    

(3) 十六进制整数:以0x开头,如0x123

2.  实型常量(浮点数)

⑴  小数形式(必须有小数点)

0.00123     -56.878

123.0        123.

0.123         .123

⑵  指数形式

1e3

1.2e-5

注意:字母e(或E)之前必须有数字,e后面指数部分必须是整数。

错误:

e3

2.1e3.5

e

3. 字符常量:

是用撇号括起来的一个字符。

        ‘a’     ‘x’     ‘d’      ‘?’      ‘[’      

转义字符:将反斜杠后面的字符转变成另外的意义。

               ‘\n’

                ‘\\’

                ‘\ddd’    例如:‘\376’

                ‘\xhh’    例如:‘\x11’

4. 字符串常量:

用一对双撇号括起来的字符序列。

                    "CHINA", "a"      

在内存中的存放:每一个字符均以其ASCII码存放,且最后添加一个“空字符”(\0)。所以”a”与‘a’不同。

5. 符号常量:

用一个标识符表示一个常量。

习惯上,符号常量名用大写,变量名用小写。

例1

           #define   PI   3.14159
           main( )
           {float  r,area,perimeter;
             r=5;
             area=PI*r*r;
             perimeter=2*PI*r;
             printf("area=%f\n",area);
             printf("perimeter=%f\n", perimeter); 
           }

3.4  变量

1.  整型变量

⑴  整型变量可分为:基本型、短整型、长整型和无符号型四种。  

基本型 ( int)  

短整型( short 或 short  int )  

长整型 (long 或 long  int )  

无符号型 (unsigned[int]、unsigned  short、unsigned  long)

⑵  整型变量的定义

例2

  main( )
              { int a,b,c,d;
        unsigned u;
        a=12;b=-24;u=10;
        c=a+u;d=b+u;
        printf("a+u=%d,b+u=%d\n",c,d);
 }

2.  实型变量

单精度实型变量在内存中占4个字节,具有7位有效数字。

                          float x,y;        

双精度实型变量在内存中占8个字节,具有15~16位有效数字。

                          double z;

注意:由于实型数据存在舍入误差,所以避免将一个很大的数和一个很小的数直接相加或相减。

main( )
{
float a,b;
a=123456.789e5;
b=a+20;
printf(“%f”,b);
}

3.字符型变量

字符型变量只能放一个字符。

    定义     char  c1,c2;

    赋值     c1= 'a';c2= 'b';        

字符数据是以ASCII码存储的。

c1= 'a';       等价于        c1=97;

例3

        main( )
         {char c1,c2;
           int i;
           c1=97;c2=98;i='a';
           printf("%c ,%d\n",c1,c1);
           printf("%c ,%d\n",i,i);
           printf("%c ,%c\n",c1,c2);
           c1=c1-32;c2=c2-32;
           printf("%c  %c\n",c1,c2);
          }

3.5  变量赋初值

可以在定义变量的同时使变量初始化。

          int a=3;    /*指定a为整型变量,初值为3*/

          float f=3.56;

          char c= 'a';

          int g,d,e=5;

          int a=b=c=3;             错误!

变量赋初值是在程序运行时完成的。

          int a=3;  

相当于

           int a;

           a=3;  

3.6  各类数值型数据间的混合运算

        整型、实型(单、双精度)、字符型数据间可以混合运算。

            10+'a'+1.5-8765.1234*'b'

例4

         main( )
         {int a=2;
          float  b=6.7,x;
          char c='A';
          x=a/3+b-c;
          printf("%f\n",x);
         }  

3.7  运算符和表达式

1.运算符的种类

1)  算术运算符  +- * /  %

2)  关系运算符   > < == >= <= !=

3)  逻辑运算符     ! &&  ||

4)  位运算符      《 》  ~  |  ^ &

5)  赋值运算符    =及其扩展赋值运算符

6)  条件运算符    ?:

7)  逗号运算符    ,

8)  指针运算符       *&

9)  求字节数运算符     sizeof

10)  强制类型转换运算符   类型

11)  分量运算符  ·→

12)  下标运算符  [ ]

13)  其它      如函数调用运算符()

2. 算术运算符和算术表达式

1)  算术运算符

     +  -   *   /    %

说明:

   两个整数相除结果为整数。

                     1/2

                     5/2

   求模运算的两个操作数必须是整数。

                   5%2

                   8%2

                   2%5

2)  算术表达式和运算符的优先级

算术表达式:

    用算术运算符和括号将运算对象(也称操作数)连接起来,符合语法规则的式子。

算术运算符的优先级:         *    /     %         +    -     (乘、除、求模、加、减)

常用数学函数:

    fabs(x)

    exp(x)

    log(x)

    log10(x)

    pow(x,y)

    sqrt(x)

    sin(x)

    cos(x)

    tan(x)

书写C语言表达式时应注意:  

  • 乘号不能省。如:ab应写成 a*b。  
  • 上下角标不能直接写,需要转换。  
  • 只可用圆括号,可以嵌套使用,但左、右括号必须匹配。  
  • 避免两个运算符并置。如a*b/-c应该为 a*b/(-c)。

两个整数相除结果仍为整数,所以要转换成实数。

                 5/12

应该写成

        5.0/12 或 5/12.0 或 5.0/12.0

标准库函数的自变量必须用括号括起来。  

如: |-2163| 应写成 fabs(-2163)

       sin12 应写成 sin(12)    

三角函数的自变量的单位是弧度。  

如:  sin50应写成:

        sin(50*3.14159/180)

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

    一般形式:(类型名)(表达式)

         如:  (int)x

               (int)(x+y)

例如:

      float x,y,z;

      x=3.5;y=6.7;

      z=(int)x+6.7;

4)自增、自减运算符

   ++i (先将i的值自增1,再使用i的值)

   --i (先将i的值自减1,再使用i的值)

   i++ (使用i的值之后,将i的值自增1)

   i--   (使用i的值之后,将i的值自减1)

例5

        main( )
         {int  i=2,j;
          printf("%d",i++);
          printf(",%d\n",i);
          printf("%d",-i++);
          printf(",%d\n",i);
          printf("%d",++i);
          printf(",%d\n",i);
         /* j=(i++)+(i++)+(i++);
          printf(“%d,%d”, i,i ++); */
         }

运行结果:

3.   赋值运算符和赋值表达式

1)赋值运算符 =

      作用:将一个表达式的值赋给一个变量。

                           x=12.6-3*y

      结合性:右结合

例6:比较两者的运行结果。

2)赋值时的类型转换问题

3)复合的赋值运算符

4)赋值表达式:

         由赋值运算符将一个变量和一个表达式连接起来的式子。

        一般形式:             <变量><赋值运算符><表达式>

        执行过程:将赋值运算符右侧的表达式的值赋给左侧的变量。赋值表达式的值就是被赋值的变量的值。

4.  逗号运算符和逗号表达式

1)  逗号运算符又称顺序求值运算符。

2)  一般形式:

                  表达式1,表达式2

3)  执行过程:

        先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值。

例1 求4个数的和。

   三种基本结构的特点:

    (1)只有一个入口、一个出口;

    (2)结构中的每一部分都有被执行到的机会;

    (3)结构内没有死循环。

例2 交换a、b两个变量的内容。

猜你喜欢

转载自blog.csdn.net/qq_34573534/article/details/102633609