您的位置:首页 > 编程语言 > C语言/C++

黑马程序员——C语言基础 03—基本运算符

2015-11-10 22:45 411 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

一、基本运算

1.基本运算符:

C语言中提供了多种运算符号,有算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、三目运算符(条件运算符)。

1)算术运算符

包括有 +, -,*, /, %, ++i , –i, i++, i– (自增自减运算符)

int main()
{
int x=32, y=3;
int a= x+y;  //加法
int b= x-y;  //减法
int c =x/y;  // 除法得商
int d =x%y;  //除法得余(求余)
...
}


注意:如果 x=-32,y =3, 则x%y== -2;

如果x=32,y=(-3) 则x%y==2;求余时,结果的正负性与%左侧的数值多正负性保持一致。

自增自减运算符:i++,i–(先用后加/减);++i,–i(先加/减后用)

int main(){

int i = 3;
int j1 = i++;
int j2 = ++i;
printf("%d,%d",j1,j2);
return 0;
}

则此时j1==3,j2==4;

注意:自增与自减运算符只能用于变量,而不能用于常量或者表达式。例如10++, (a+b)++都是不合法的。


2)算术表达式和运算符的优先级与结合性

表达式求值时按照运算符的优先级分别执行,先乘除后加减。

3)不同类型数据间的混合运算

char—》int—》float—》double

4)强制类型转换符

(类型名)(表达式)

int(x+y) //将表达式x+y的值转换成int型


2、赋值运算符‘=’与‘ +=’

int a=3; // 将3的值赋给=左边的变量a;
int a=b=4;  //连续赋值,左边只能是常量,不能是变量

a+=3  等价于 a=a+3;
a-=3   等价于 a=a-3;
a*=3   等价于 a=a*3;
a/=3   等价于 a=a/3;
a%=3   等价于 a=a%3;


sizeof

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

基本形式

sizeof(变量\常量) sizeof变量\常量

sizeof(数据类型)

#include <stdio.h>

int main()
{
//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; // 错误的

printf("size=%d\n", size);

return 0;
}


3.关系运算符 >, <, >=, <=

关系运算符返回值只有真(1)与假(0);

关系运算符中==、!=的优先级相等,<、<=、>、>=的优先级相等,且前者的优先级低语后者:2==3>1

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

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

#include <stdio.h>

int main()
{

int a = 10;

int b = 11;

int result = b >= a;

printf("%d\n", result);

return 0;   // 条件成立就返回1,真;条件不成立就返回0,假

}

此时输出结果是1.


4 . 逻辑运算符 &&, ||, !

1)逻辑与&&

使用格式:“条件a&&条件b”

运算结果:

只有当条件a和条件b都成立时,结果才为1,也就是“真”;其余情况的结果都为“0”,也就是“假”。因此,条件a或b只要有一个不成立,结果都为“0”,也就是“假”。

注意:逻辑与的结合方向是“自左至右”。

&&的短路问题:

0&&a++
2||a++    此时的a++都不参与运算


2)逻辑或||

使用格式:“条件a ||条件b”

运算结果:

当条件a或条件b只要一个成立时(也包括条件a、b都成立),结果就是1,也就是”真“;只有当条件a和b都不成立时,结果才是0,也就是假。

int a = 10;
int b = 15;

int c = (a<10) || (b++ - 15);
printf("a=%d, b=%d, c=%d\n", a, b, c);

此时的  a = 10,b = 16,c = 0.


3)逻辑非 !

使用格式: “!条件a”

运算结果:

其实就是对条件a进行取反:若条件a成立,结果就是0;若条件不成立,结果就为1。

注意

可以连续多次使用逻辑非运算符:比如 !!(4>2)的结果是真。

4) 优先级

逻辑运算符的优先级顺序为:小括号()>符号-> ! >算数运算符>关系运算符>&&>||

三目运算符 ?:

使用格式: 条件 ? 数值1(或表达式1):数值2(或表达式2)

例如 a = 0 ? 9 : 89; 则此刻a==89;

经典题目:求两个数的最大值;

int main()
{
int a = 10;

int b = 20;

int max = a>b ? a : b;

printf("max is %d\n", max);

求3个数之间的最大值
int main()
{
int a=10;

int b=20;

int c=30;

int abMax = (a > b) ? a : b; //求出a、b的最大值

int max = (abMax > c) ? abMax : c;
//用c与abMax 比较最后的最大值

printf("max is %d\n", max);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: