运算符表达式和语句

    运算符表达式和语句
1.1        基本运算符
1.1.1           =
数据对象:泛指数据在内存的存储区域
左值:表示可以被更改的数据对象
右值:能赋给左值的量
1.1.2           +
1.1.3          
1.1.4           *
1.1.5           /
1.1.6           %
取余数
1.1.7           +=
加等于
1.1.8           -=
减等于
1.1.9           *=
乘等于
1.1.10       /=
除等于
1.1.11       %=
取余等于
1.1.12       ++
自加 1
i++ 先计算表达式的值,然后再 ++
++i 是先 ++ ,再计算表达式的值
1.1.13       --
自减一
1.1.14       逗号运算符
int a = 2;
int b = 3;
int c = 4;
int d = 5;
int i = (a = b, c + d);
 
逗号表达式先求逗号左边的值,然后求右边的值,整个语句的值是逗号右边的值。
1.1.15       运算符优先级
优先级 运算符 结合性
1 ++(后缀),--(后缀),()(调用函数),{}(语句块),.,-> 从左到右
2 ++(前缀),--(前缀),+(前缀),-(前缀),!(前缀),~(前缀),sizeof,*(取指针值),&(取地址),(type)(类型转化) 从右到左
3 *, /, % 从左到右
4 +,- 从左到右
5 << >> 从左到右
6 < > <= >= 从左到右
7 == != 从左到右
8 & 从左到右
9 ^ 从左到右
10 | 从左到右
11 && 从左到右
12 || 从左到右
13 ? 从右到左
14 =,*=,%=,+=,-=,<<=,>>=,&=,|=,^= 从右到左
15 ,(逗号运算符) 从左到右
 
1.2        复合语句
{} 代码块
1.3        空语句
只有一个 ; 号的语句就是空语句,空语句在 C 语言里面和合法的,并且是在某些场合必用的
1.4        类型转化
double f = (double)3 / 2;
()为强制类型转化运算符
 
2           条件分支语句
2.1        关系运算符
C 语言中 0 代表 false ,非 0 代表真
2.1.1          
小于
2.1.2           <=
小于等于
2.1.3          
大于
2.1.4           >=
大于等于
2.1.5           ==
等于
2.1.6           !=
不等于
2.2        关系运算符优先级
前四种相同,后两种相同,前四种高于后两种优先级
2.3        逻辑运算符
2.3.1           &&
当运算符左右都是真的时候,那么整个表达式的结果为真
只有左右有一个值为假,那么整个表达式的结果为假
2.3.2           ||
当运算符左右只要有一个值是真的时候,那么整个表达式的结果为真
除非左右两个值都是假,那么整个表达式的结果为假
 
2.3.3           !
当值为真的时候,表达式为假,
当值为假的时候,表达式为真
2.4        if
单分支
If ( 条件 )
{
// 复合语句
}
当条件是真的时候,复合语句才能被执行,如果条件为假的时候,复合语句不执行
2.5        if else
双分支
If ( 条件 )
{
复合语句 1
}
Else
{
复合语句 2
}
如果条件为真,那么执行复合语句 1 ,否则执行复合语句 2
2.6        if else if
多重 if
If ( 条件 1)
{
复合语句 1
}
Else if (条件 2
{
复合语句 2
}
Else if (条件 3
{
复合语句 3
 
}
Else
{
复合语句 4
}
当有多个 else 的时候, else 总是和上方最近的那个 if 语句配对。
 
2.7        switch break,default
多重选择
switch (i)
{
case 0:
printf("i = 0\n");
break;//跳出switch的复合语句块
case 1:
printf("i = 1\n");
break;
case 2:
printf("i = 2\n");
break;
case 3:
printf("i = 3\n");
break;
case 4:
printf("i = 4\n");
break;
default://如果有所条件都不满足,那么执行default语句
printf("error\n");
}
 
 
什么时候用 if ,什么时候用 switch
当条件很复杂,一个条件中有 && || ,!存在,那么用 if 语句
如果条件很简单,但分支很多,那么适合用 switch
2.8        条件运算符?
一个求绝对值的例子
int i = -8;
int x = (i < 0) ? -i: i;
 
先求?左边的条件,如果条件为真,那么等于:左边的值,否则等于:右边的值
一个求最大值的例子
int c = (a > b) ? a : b;
 
2.9        goto 语句与标号
无条件跳转 goto
不建议使用 goto 语句, goto 语句会使你的程序可读性变的很差
代码:
#include <stdio.h>
int main()
{
int i = 3 < 5;
printf("i=%d\n", i); //在C语言中 true 为1 false 为0
/*
三元运算符
*/
goto end;//直接跳到中间代码 转到end处运行
int a = 1;
int b = 2;
int c = 0;
if (a < b)
{
c = b;
}else
{
c = a;
}
printf("c=%d\n", c);
c = (a < b) ? b : a; //与上面的ifelse 语句完全等价
printf("c=%d\n", c);
/*
goto 语句 :无条件跳转语句
*/
end://标号
printf("end!");
return 0;
}
3           循环语句
3.1        while
while (条件),如果条件为真,循环继续,条件为假,循环结束
 
while 1 )、、是死循环的写法
3.2        continue
循环遇到 continue 语句,不再执行 continue 下面代码,而是直接返回到循环起始语句处继续执行循环
3.3        break
循环遇到 break 语句,立刻终端循环,循环结束
3.4        do while
do
       复合语句
while ( 条件 );
 
对于 do while 来讲,循环的复合语句至少可以被执行一次
对于 while 来讲,有可能复合语句一次执行机会都没有
3.5        for
for(int I = 0;i<10;i++)
 
3.6        循环嵌套
int i,j;
for(i = 9; i > 0; i--)
{
for(j = 9; j > 0; j--)
{
printf("%d\t", i * j);
}
printf("\n");
}
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS

int main()
{
int i = 3 < 5;
printf("i=%d\n", i); //在C语言中 true 为1 false 为0
/*
三元运算符
*/
goto end;//直接跳到中间代码 转到end处运行
int a = 1;
int b = 2;
int c = 0;

if (a < b)
{
c = b;
}else
{
c = a;
}
printf("c=%d\n", c);
c = (a < b) ? b : a; //与上面的ifelse 语句完全等价
printf("c=%d\n", c);
/*
goto 语句 :无条件跳转语句
*/
end://标号
printf("end!");

/*
while 循环 do ... while(); 先执行语句,再执行判断while 条件, do...while 复合语句至少会执行一次
*/
int j = 0;
int sum = 0;
while (j <= 100)
{
j++;
if (j % 2)
{
continue;//continue 跳过下面的语句回到循环的开始执行 break直接退出循环 在for 循环中也是如此
}
sum += j;
}
printf("1+...+100=%d\n", sum);
/*
打印乘法口诀
*/
int x = 1;
int y = 1;
for (x=1;x <= 9;x++)
{
for (y=1;y <= x;y++)
{
if (x*y >= 10)
{
printf("%d * %d = %d ", y, x, x*y);
}else
{
printf("%d * %d = %d ", y, x, x*y);
}
}
printf("\n");
}

/*
用*打印一个树菱形
*/
int x1,x2; //x1 *最多行的*个数 x2 为总行数
do
{
printf("请输入*最多行的个数:");
scanf("%d", &x1); //这里可以自定义菱形边长
if (x1 % 2)
{
break;
}else
{
continue;
}
} while (1);
x2 = x1; //根据规律发现 x1 = x2
for (int i = 1; i <= x2;i++) //i在这里表示行数
{
if (i <= x2 / 2+1) //打印图形上半部分 从第一行到 第x2/2+1行
{
for (int j = 0; j <= x1 / 2 - i; j++) //打印" " ,第一行为 x1/2 -1 个 " "(空格),随行数i递减,第行第行减少一个 所有每行的个个数为 x1/2-i+1个
{
printf(" ");
}
for (int j = 0; j < 2 * i - 1;j++) //打印"*"随行数递增 *数与行数的关系为2i -1
{
printf("*");
}
printf("\n");
}
else //打印图形下半部分 从第 x2/2+2行开始到 第x2行
{
for (int j = 0; j <=i - x2 / 2 - 2 ; j++) //从第 x2/2+2 空格每行加1,x2/2+2 =1 ,根据等差数列:空格数 = i-(x2/2+2)+1
{
printf(" ");
}
for (int j = 0; j < x1 -2*( i-(x2 / 2+1)) ;j++)// 同理 x1-2-2*(i-(x2/2+2)) 整理得:
{
printf("*");
}
printf("\n");
}
}
//printf("%d", x1);
return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

crystalnsd

万水千山总是情,支持一下行不行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值