黑马程序员—C语言的基本运算以及流程控制学习的注意点

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

在学习基本算法与流程控制之前,先补充在学习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 }

总结一下,如果switch语句要在case后面定义新的变量,必须要用大括号{}包住,其定义的变量只在其所在的代码块中定义,执行后就结束。

时间: 2024-10-07 18:58:06

黑马程序员—C语言的基本运算以及流程控制学习的注意点的相关文章

黑马程序员 ---- C 语言的运算及流程控制

C 语言的运算及流程控制         一. 运算部分:         C语言中的类型转换  强制类型转换 int b = (int) 10.5          // double -> int 自动类型转换 int a = 10.6 // double -> int int b = 10.5 + 1.7  // 自动将大型转换为了小数类型,会丢失精度 自动类型提升 int b = 10.5 +10;  // int -> double       将右边的10 提升为了doubl

黑马程序员_C语言总结-基础部分

C语言基础 1.C语言的关键字 1>关键字就是C语言提供的有特殊含义的符号,也称为保留字,C语言中一共有32个关键字,这些关键字都有自己的含义 例如:int double float if  else switch for 等等 2.标示符的概念: 1>标示符就是在程序中自定义的一些名称,比如函数名,变量名,结构体名等等这些都是标示符 2>命名规则: 1>只能由英文字母的大小写和数字以及_下划线组成,且首字母必须为字母或者下划线_ 2>在C语言中是严格区分大小写的,比如if是

黑马程序员_OC语言前期准备

OC语言前期准备 一.OC简介 Oc语言在c语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,在OC代码中,可以混用c,甚至是c++代码. 可以使用OC开发mac osx平台和ios平台的应用程序. 拓展名:c语言-.c  OC语言.-m  兼容C++.-mm 注:其实c语言和oc甚至任何一门语言都只是我们为了实现一些功能,达到一些效果而采用的工具,抛开语法的差别外,我想最重要的应该是在解决问题的时候考虑的角度和方法不一样而已,然而这也构成了学习一门语言的重要性. 二.语法预览 (一)

黑马程序员-c语言变量作用域问题

c语言中的变量作用域总结 不管什么语言,main好像总是程序的入口,大括号是它的内容:变量的作用域总是困扰着我们,接下来,我们循序渐进的搞明白c语言中的变量作用域,首先得知道c是弱类型的语言,弱类型表现在很多方面: 1:你可以直接在程序中写一个常量,然后一个分号:1: 2:在定义函数时,void型的函数可以return:int型的可以不用写返回值. ---还有很多 下面我们一步一步开始:首先在main中定义的变量当然作用于整个main函数了 1:在main中定义变量 #include<stdio

黑马程序员——c语言学习心得—— 指针

黑马程序员——c语言学习心得—— 指针 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,打开文件fopen(文件名,打开方式);例如:FILE *fp = fopen("a1","r");  返回的是文件的指针(文件在内存缓冲区的首地址)fopen函数反回值 是指向 a1文件的指针,通常赋值给一个指针变量关于文件名a1 也可以是一个“路径+文件名”   c:\abc.txt----------------

黑马程序员——c语言学习心得——位运算符

黑马程序员——c语言学习心得——位运算符 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 1. 按位与运算 按位与运算符"&"是双目运算符.其功能是参与运算的两数各对应的二进位相与.只有对应的两个二进位均为1时,结果位才为1 ,否则为0.参与运算的数以补码方式出现. 例如:9&

黑马程序员——c语言学习心得—— 电影购票系统

黑马程序员——c语言学习心得——  电影购票系统 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,基础信息类 #import <Foundation/Foundation.h> #import "Cinema.h" void buyMovieTicket(){ //购买电影票 //调用 电影院的类的 buyTicket的方法 //                  [[Cinema alloc] init]; C

黑马程序员——c语言学习心得——函数传递二维数组

黑马程序员——c语言学习心得——函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.   变量定义的时候给变量初始化,这是保证不出错的一个很好的习惯.尤其是在指针的使用上,如果我们没有给指针初始化,就会出现野指针,该指针的指向并不是我们所希望的,一旦错误的释放了这个指针,就会发生内存的访问.那么如何初始化指针变量呢,一般有以下几种方法:   1.初始化空指针   int* pInteger=N

黑马程序员——oc语言学习心得—— 属性声明和赋值

黑马程序员——oc语言学习心得—— 属性声明和赋值 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,在oc中所有类继承与终极父类Object2,声明字符变量采用N是string  *_xxx 实例变量一般以下划线开头3,在oc中方法以+ -号区分 -号开头是实例方法或对象方法  +号开头是类方法  前置用对象调用 后者用类名调用4,在xcode4以后声明@property 不用在写@snysize  自动生成get.set方法5,属性