zoukankan      html  css  js  c++  java
  • C语言的基本运算以及流程控制学习的注意点

     

    在学习基本算法与流程控制之前,先补充在学习C语言基础语法时的变量内存分析以及scanf函数的一些用法注意。

    一、变量内存分析:不同的数据类型所占用的字节是不一样的,数据越大,所占用的字节数就越多,在系统分配内存时,内存寻址是由大到小的,在系统中验证输出内存地址的C语言语句是:printf("变量的内存地址是:%p" , &变量名)。其中&是一个地址运算符,用来取得变量的地址,%p是用来输出地址。

    二、scanf函数:scanf函数与printf函数是相对的,printf函数是输出一些数据到电脑屏幕上,而scanf函数则是需要用户输入数据,当程序执行到scanf函数时会暂时停止,需要用户输入信息按回车键后再继续执行。

    scanf函数只接受变量的地址,因此在使用scanf函数时scanf("%d" , &变量名)。注意:scanf函数中不能有换行符\n。在一次性输入多个数值时,编写代码以某些符号隔开,在用户输入时也要输入相同的符号。

    第一讲     C语言的基本运算 

    c语言的基本运算主要包括算术运算、赋值运算、自增自减运算、关系运算、逻辑运算以及三目运算等,下面我们来交流一下我觉得其中的易混淆点以及注意的地方。

    1、算术运算:主要包括的就是加,减,乘,除和取余运算,其中需要注意的是取余运算又称为模运算,在%的两边也都是整数,并且%取余的结果正负只跟%左边的数值的正负有关。(%左边为正则取余的结果为正,反之左边为负值结果就是负值)

    2、赋值运算:这个没有什么多说的,比较简单,注意与==区分好。

    3、自增自减运算:体会a=a+1,a+=1,a++,++a的相同和不同之处。注意++a是在a自增后使用,而a++则是先使用再自增。sizeof是计算其所占的内存的字节数

    4、关系运算:C语言的真假问题,在C语言中任何非0的值都为真(无论正数负数),只有0才为假。关系运算包括比较大小,等于或不等于等等。

    5、逻辑运算:逻辑与&&,逻辑或||,逻辑非!条件,其中逻辑非是条件成立则返回0,如果条件不成立则返回1.

    6、三目运算:三目运算符:条件 ? 数值1 : 数值2  条件成立则返回数值1,不成立返回数值2

    第二讲     流程控制中的选择结构注意点

    C语言选择结构主要包括if语句和switch语句,在学习if语句时有个作用域问题是需要注意的,下面就用代码来描述一下:

     1 #include <stdio.h>
     2  
     3 int main()
     4 {
     5      int a = 10;
     6      if (a>1)//在执行if语句时未加大括号,条件成立后执行下一语句,但不管条件是否成立,系统都会打印B,输出B的语句并不在条件语句里
     7          printf("A\n");//这么写可读性不强,但在程序运行编译时没有问题,是属于if结构中的一种
     8          printf("B\n");
     9      return 0;
    10 }

    再举一个例子跟上个例子有点类似,但此处涉及到作用域的问题:

    1 #include <stdio.h>
    2 int main()
    3 {
    4      if(10>6)
    5         int a = 5;//这么写会报错,因为a的作用域不明确,如果需要定义a则需加上大括号。
    6         printf("%d\n", a);//无法输出a
    7      return 0;
    8 }

    总结一下if语句注意的地方,如果要在if语句后面的语句中定义新的变量,必须用大括号,这也是为了保证代码的可读性与规范。

    同样的问题在switch语句中也会有类似的情况出现,就是在case语句中涉及到作用域的问题时,需要用大括号括起来,举个例子:

     

     1 #include <stdio.h>
     2 int main()
     3 {
     4      char c='+';
     5      int a = 10;
     6      int b = 20;
     7      switch (c) {
     8           case '+':
     9              int sum=a+b;//此处无法定义,会报错,因为sum的作用域不明确,系统无法区分是在case中还是在整个程序中,因此如果要定义需要加上大括号。
    10              printf("和是%d\n", sum);
    11              break;
    12           case '-':
    13              int minus=a-b;//此处也是一样,会报错。
    14              printf("差是%d\n", minus);
    15              break;
    16      }
    17      return 0;
    18 }

     

    本章学习总结:

         本章主要学习了C语言的基本运算,包括算术运算(加,减,乘,除,取余),赋值运算,自增自减运算,关系运算,逻辑运算和三目运算,在执行C语言的基本运算时,需要注意运算符的优先级的问题,同时要区分好赋值运算符=以及等于==,虽然现在理解但在今后的代码中很容易忽视和混淆。本章的第二块内容是选择结构中的注意点,在if和switch语句的case后面定义新的变量,必须要用大括号{}包住,不然会因作用域不明确而报错,其定义的变量只在其所在的代码块中定义,执行后就结束。这也是提醒我们注意平时的编程规范问题,要养成好的编程习惯和规范,以免今后出现一些不必要的错误。

     

  • 相关阅读:
    MySQL全面瓦解20:可编程性之流程控制语句
    MySQL全面瓦解19:游标相关
    MySQL全面瓦解18:自定义函数
    MySQL全面瓦解17:触发器相关
    MySQL全面瓦解16:存储过程相关
    MySQL全面瓦解15:视图
    MySQL全面瓦解14:事务
    MySQL全面瓦解13:系统函数相关
    MySQL全面瓦解12:连接查询的原理和应用
    MySQL全面瓦解11:子查询和组合查询
  • 原文地址:https://www.cnblogs.com/twcblog/p/4380916.html
Copyright © 2011-2022 走看看