黑马程序员_第二天视频学习 基本运算和流程控制

来源:互联网 发布:邓肯所有季后赛数据 编辑:程序博客网 时间:2024/06/09 08:07

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

一、 基本运算:

1、算术运算

加法运算+        减法运算-       乘法运算*

除法运算/ (整数/整数=整数  例3/2=1)

取余运算% (也叫模运算,%两侧只能是整数,正负性取决于%左侧的数值)

注意:

(1)、自动类型转换 (doube -> int)              int a=3.4;

(2)、强制类型转换 (doube -> int)              int a= (int)3.4;

        将大类型转换成小类型会丢失精度

     (3)、自动类型提升      将小类型提升为大类型       double a =5.2 + 3;

2、赋值运算

       简单赋值       int a = 1;

       复合赋值       复加减乘除余       a * = 4 – 5/3;

3、自增自减运算符

       a++,       ++a,       a--,  --a   (a只能是变量)

       a++ 是先赋值再运算自增;++a是先运算自增再赋值;

4、sizeof

       作用:用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。

       形式:sizeof(变量\常量)     sizeof 变量\常量  sizeof(数据类型)  (括号不能去除)

5、关系运算(比较运算)

(1)、条件判断:成立执行代码,不成立不执行

(2)、真假:条件成立为’真’,不成立为’假’,所有非0的值都为’真’,只有’0’才为’假’;

(3)、关系比较:==,!=,>,>=,<,<=;条件成立返回1,不成立返回0;

       优先级:(==,!=)相等 <(>,>=,<,<=)相等; 关系运算符的优先级小于算术运算符

6、逻辑运算

       (1)、逻辑与:&&  两个条件只要有一个不成立,结果都为0,也就是’假’;

                   判断的时候,先判断第一个条件是否成立,不成立则不再判断第二个条件是否成立,直接返回假;成立则继续判断第二个条件是否成立,成立返回真,不成立返回假。

       (2)、逻辑或:  ||     两个条件只要有一个成立,结果都为1,也就是’真’;

                   判断的时候,先判断第一个条件是否成立,成立则不再判断第二个条件是否成立,直接返回真;不成立则继续判断第二个条件是否成立,成立返回真,不成立返回假。

       (3)、逻辑非:对条件取反,若条件成立,返回假;若条件不成立,返回真。

 

7、三目运算符

       条件 ? 数值1 : 数值2;     条件成立返回数值1,条件不成立返回数值2;

       取最大值:

       #include <stdio.h>

       Int main()

{

int a = 100 ,b = 90 , c = 500 , d;

int abMax = a> b ? a : b;

int d = abMax> c ? abMax : c;

printf(“最大值为%d”,d);

return 0;

}

 

二、流程控制

 

(一)、选择结构

1、if

(1)、语句结构

if ( 条件1 )

{

执行语句

}else if ( 条件2 )

{

执行语句

}else

{

执行语句

}

另一种形式

if (条件) 语句1;语句2;   语句2与if无关;if只控制是否执行语句1;

(2)、特点:同一时刻,只有一个大括号里的代码会被执行

(3)、注意:

A、比较大小时,常量值放左边,变量放右边;

B、赋值运算符,不要写成两个=;

C、如果要在if后面的语句中定义新的变量,必须用大括号{};

  if(1) int a = 1; 这个是错误的,因为作用域不明确;应改为if(1) { int a = 1;}

2、switch

(1)、语句结构

       switch(数值)

{

case 数值1:

执行语句;

break;

case 数值1:

执行语句;

break;

default: 执行语句;break;

}

(2)、特点:

A、默认情况下,只有一个case后面的代码会被执行;

B、如果一个case后面没有break,而且这个case成立,就会按顺序执行后面所有case中的语句,直到遇到break为止;

C、如果要在case后面定义一个新的变量,必须要用大括号{}包住;

 

if 和 switch

(1)、if语句能完成的功能,switch并不一定能完成;int a = 10; if (a>100){};

(2)、有些情况下,两种语句可以互换;

(3)、switch能完成的功能,if语句都能完成

 

(二)、循环结构

1、while

(1)、语句结构

While (条件)

{

              循环体

}

(2)、运行原理

A、如果一开始条件就不成立,永远不会执行循环体

B、如果条件成立,就会执行一次循环体,执行完毕,再次判断条件是否成立,往复循环。

#include <stdio.h>

int main()

{

       int n = 0;

       while ( n <= 0 )

{

              printf(“请输入一个正整数:\n”);

              scanf(“%d”,&n);

}

printf(“此正整数为%d\n”,n);

        return 0 ;

}

(3)、最简单的死循环:      while(1);

2、do while

(1)、语句结构

       do

       {

              循环体

}

While(条件);

(2)、特点:不管一开始的条件是否成立,至少会执行一次循环体;while(条件)后面有”;”;

很多情况下,while和do while可以互换

3、for

(1)、语句结构

       for(语句1;条件;语句2)

{

              循环体

}

       语句1:初始化语句;语句2 :增量语句(执行完循环体后再执行的语句);

(2)、运行原理

A、for一开始就会执行一次语句1(整个for循环只会执行一次语句1);

B、判断条件是否成立,如果成立,就会执行一次循环体,然后就会执行语句2,再次判断条件是否成立,往复循环;

语句1,语句2,语句3;逗号表达式(逗号运算符);

for循环的变量定义在内部,循环完毕变量回收;while循环只能使用外部变量,变量一直存在。

#include <stdio.h>

int main()

{

for ( int i=1 ; i<10 ; i++ )

{

      for ( int j=1 ; j<10 ; j++ )

{

      Int sum = i * j;

      printf(“%d*%d=$d  ”,i,j,sum);

}

printf(“\n”);

}

        return 0 ;

}

(3)、使用注意

A、for()后不要写分号;

B、错误写法:  for ( int i=0 ; i<3 ;i++) int a=10; 作用域不明确;

C、for ( int i=0 ; i<3;i++) { int i=10;}这个是正确的,因为for()内的i的作用域比代码块中的i的作用域要大。

(4)、最简单的死循环: for(;;);

 

如何选择循环

1、一般优先选择for循环

2、然后再考虑while (比如验证用户输入的数是否为正整数)

3、最后在考虑do while

 

break和continue

1、break

a、使用场合:switch语句:退出整个switch语句;循环结构:退出整个循环结构。

b、注意点:只对最近的循环结构有效

2、continue

a、使用场合:循环结构:结束当前这次的循环体,进入下一次循环体。

b、注意点:只对最近的循环结构有效

 

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

0 0
原创粉丝点击