黑马程序员 C语言 - 02 基本运算

来源:互联网 发布:学都塔尔软件 编辑:程序博客网 时间:2024/06/05 07:14

若排版有错误,请查看pdf版:C语言 - 02 基本运算


第三章 基本运算

一、  算术运算

1.       基本使用

int a = 10 + 1 + 2 -3 +5;

int b = -10;

int c = 10 * b;

int d = 10 /2;

 

2.       取余运算(% 模运算)

1)     %两边都是整数

2)     %取余结果的正负性只跟%左边的正负有关

int e = 10 % -3;// 1

 

3.       自动类型转换(double--->int)

int a = 10.8;

 

4.       强制类型转换(double--->int)

int b = (int)10.5;

 

5.       自动类型提升(int--->double)

double c = 10.6 + 6;

double d = 1 /3;

 

二、  赋值运算

a = 5 + 6 *5 +8;

    a += 5; // a = a + 5;

    a *= 5; // a = a * 5;

    a+= 5 + 6 +4;// a = a + (5 + 6 + 4);

 

三、  自增自减

++a是先把a的值+1,再把a值放入公式;a++是先把a值放入公式,再把a值+1

 

    int b;

    int a = 10;

    b = (a++) +(++a);

    // b = 10 + 12; a=12;

    b = (++a) + (a++);

 // b = 13 + 13; a=14

 

四、  sizeof

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

2.       基本形式

1)  sizeof( 变量\常量 )

2)  sizeof 变量\常量

3)  sizeof( 数据类型 ) 不能是sizeof 数据类型

 

    int size = sizeof(10);

    int size = sizeof 10.9;

 

    int a = 10;

    int size = sizeof(a);

    int size = sizeof a;

 

    int size = sizeof(char);

    int size = sizeof char; // 错误写法

    int size = sizeof(sizeof) // 不能是sizeof类型

 

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

1.       C语言规定,任何数值都有真假性,任何非0值都为“真”,只有0才为“假”。也就是说,108、-18、4.5、-10.5等都是“真”,0则是“假”。

2.       关系运算符的运算结果只有2种:如果条件成立,结果就为1,也就是“真”;如果条件不成立,结果就为0,也就是“假”。

3.       关系运算符中==、!=的优先级相等,<、<=、>、>=的优先级相等,且前者的优先级于后者

4.       关系运算符的结合方向为“从左往右”: 4>3>2

5.       关系运算符的优先级小于算术运算符:3+4>8-2

 

六、  逻辑运算

(一)    逻辑与 &&

1.       使用格式:条件A && 条件B

2.       当条件A和条件B都成立时,结果才为1,也就是“真”

3.  总是先判断条件A是否成立(逻辑与的结合方向是“自左至右”)

1)     如果条件A成立,接着再判断条件B是否成立

2)     如果条件A不成立,就不会再去判断条件B是否成立

4.  若想判断a的值是否在(3, 5)范围内,千万不能写成3<a<5,因为关系运算符的结合方向为“从左往右”。比如a为2,它会先算3<a,也就是3<2,条件不成立,结果为0。再与5比较,即0<5,条件成立,结果为1。因此 3<a<5的结果为1,条件成立,也就是说当a的值为2时,a的值是在(3, 5)范围内的。这明显是不对的。正确的判断方法是:(a>3) && (a<5)

5.  C语言规定:任何非0值都为只有0才为。因此逻辑与也适用于数值。比如 5 && 4的结果是1,为“真”;-6 && 0的结果是0,为“假”

(二)    逻辑或 ||

1.  使用格式:条件A || 条件B

2.  条件A、条件B只要有一个成立(也包括条件A和条件B都成立),结果就为1

3.  总是先判断条件A是否成立(逻辑或的结合方向是“自左至右”)

1)  如果条件A成立,就不会再去判断条件B是否成立

2)  如果条件A不成立,接着再判断条件B是否成立

4.  逻辑或也适用于数值。比如 5 || 4的结果是1,为“真”;-6 || 0的结果是1,为“真”;0 || 0的结果是0,为“假”

(三)    逻辑非 !

1.  使用格式:! 条件A

2.  对条件A进行取反:若条件A成立,结果就为0,即“假”;若条件A不成立,结果就为1,即“真”

3.  对非0值进行逻辑非!运算的结果都是0,对0值进行逻辑非!运算的结果为1。

 

七、  三目运算

1.       使用格式:条件 ? 数值1 : 数值2

2.       条件成立返回数值1,条件不成立返回数值2

    // 计算3个整数之间的最大值

    int a = 10;

    int b = 999999;

    int c = 1000;

   

     // 求出ab的最大值

    int abMax = (a > b) ? a : b;

    // 求出最终的最大值

    int d = (abMax > c) ? abMax: c;

 

八、  运算符的优先级

优先级

描述

运算符

1

括号

()、[]

2

正负号

+、-

3

自增自减,非

++、--、!

4

乘除,取余

*、/、%

5

加减

+、-

6

移位运算

<<、>>、>>>

7

大小关系

>、>=、<、<=

8

相等关系

==、!=

9

按位与

&

10

按位异或

^

11

按位或

|

12

逻辑与

&&

13

逻辑或

||

14

条件运算

?:

15

赋值运算

=、+=、-=、*=、/=、%=

16

位赋值运算

&=、|=、<<=、>>=、>>>=

 


0 0