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后面定义新的变量,必须要用大括号{}包住,不然会因作用域不明确而报错,其定义的变量只在其所在的代码块中定义,执行后就结束。这也是提醒我们注意平时的编程规范问题,要养成好的编程习惯和规范,以免今后出现一些不必要的错误。